Linux
遞歸輸出所有子目錄的文件名和文件大小?
我的目標是測量我的 Linux 系統上每個文件的文件大小(以 MB 或 GB 為單位),遞歸地記錄文件名和文件大小,並將輸出通過管道傳輸到製表符分隔的文本文件中。
什麼是合適的命令?
可以嘗試這樣的命令:
ls -lhR > outputfile.txt
但我有理由認為這是非常低效的:
http://mywiki.wooledge.org/ParsingLs
使用for循環會更合適嗎?
試試這個(假設 GNU
find
並且文件名不包含雙引號字元):{ printf '%s\t%s\n' size path find / \( -path /proc -o -path /sys \) -prune -o -printf '%s\t"%P"\n' | numfmt --to=iec } > outputfile.csv
查看
man find | less +/'-printf format'
或者
info --ind=-printf find
sudo du -h / 2>/dev/null > out.csv
- 用於
sudo
確保讀取所有文件。- 用於“人類可讀”的大小格式
-h
。du
- 不顯示錯誤(
2>/dev/null
,2
標準錯誤在哪裡)- 將結果發送到文件 (
> out.csv
)。這會生成一個包含文件大小和路徑的列表,值之間有一個製表符。