递归输出所有子目录的文件名和文件大小?

EB2*_*127 3 linux ls size disk-usage

我的目标是测量 Linux 系统上每个文件的文件大小(以 MB 或 GB 为单位),递归地记录文件名和文件大小,并将输出通过管道传输到一个制表符分隔的文本文件中。

什么是合适的命令?

可以尝试这样的命令:

ls -lhR > outputfile.txt
Run Code Online (Sandbox Code Playgroud)

但我有理由认为这是非常低效的:

http://mywiki.wooledge.org/ParsingLs

使用 for 循环会更合适吗?

Chr*_*her 6

sudo du -h / 2>/dev/null > out.csv
Run Code Online (Sandbox Code Playgroud)
  • 用于sudo确保您阅读所有文件。
  • 使用-h带有du一个“ ^ h乌曼可读的”大小格式。
  • 不显示错误(2>/dev/null2标准错误在哪里)
  • 将结果发送到文件 ( > out.csv)。

这会生成一个包含文件大小和路径的列表,值之间有一个选项卡。

  • `du` 报告磁盘使用情况,而不是文件大小(对于目录,目录的磁盘使用情况加上它包含的所有文件和目录的磁盘使用情况,递归地)。你需要 `-a` 来包含非目录文件。它还会跳过一些硬链接。使用 GNU `du`,`du -hal --apparent-size /` 可能会更好 (2认同)