我想做这样的事
du -a | sort -rn | head
但我只想提取文件,忽略目录。
要清楚的是,我想遍历所有子目录,但我不想查找目录大小。只想查找文件大小。
更新
我还想返回文件的完整路径
答案1
这应该有效:
find <path> -type f -exec du -a{} + | sort -rn | head
取自http://unix-linux.itags.org/q_unix-linux-programming_84920.html
答案2
查找目录中最大文件的一种方法:
find . -type f | xargs ls -1S | head -n 1
答案3
我只想添加我的解决方案,尽管它不如@Michael Plotke 的解决方案那么完整
ls -lR | egrep "^-" | awk '{ print $5, "\t", $8 }' | sort -rn | head
更新 1
我现在必须在 BSD unix 上使用这个脚本(我最初并不打算这样做)并且发现 Michael 的解决方案不起作用。
通过将@steve 的解决方案合并到我的解决方案中,该解决方案在 BSD 系统上更有用:
find . -type f | xargs ls -lS | awk '{ print $5, "\t", $9 }' | head
更新2
进一步完善。解决不常见文件名(例如空格)的问题
find . -type f -print0 | xargs -0 ls -lS | awk '{ print $5, "\t", $9 }' | head
笔记:我发现这个解决方案在 WSL(Windows 子系统 Linux)上比公认的解决方案快得多。
在一个包含大约 1000 个文件的目录中,这个解决方案需要几秒钟,而接受的答案则需要几十分钟。