如何查找目录中的最大文件 - 忽略目录大小

如何查找目录中的最大文件 - 忽略目录大小

我想做这样的事

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 个文件的目录中,这个解决方案需要几秒钟,而接受的答案则需要几十分钟。

相关内容