Linux

遞歸輸出所有子目錄的文件名和文件大小?

  • December 14, 2020

我的目標是測量我的 Linux 系統上每個文件的文件大小(以 MB 或 GB 為單位),遞歸地記錄文件名和文件大小,並將輸出通過管道傳輸到製表符分隔的文本文件中。

什麼是合適的命令?

可以嘗試這樣的命令:

ls -lhR > outputfile.txt

但我有理由認為這是非常低效的:

http://mywiki.wooledge.org/ParsingLs

使用for循環會更合適嗎?

試試這個(假設 GNUfind並且文件名不包含雙引號字元):

{
   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確保讀取所有文件。
  • 用於“人類可讀”的大小格式-hdu
  • 不顯示錯誤(2>/dev/null2標準錯誤在哪裡)
  • 將結果發送到文件 ( > out.csv)。

這會生成一個包含文件大小和路徑的列表,值之間有一個製表符。

引用自:https://unix.stackexchange.com/questions/430019