如何查找目录及其子目录中的最大文件?

我们刚刚启动了一个UNIX类并正在学习各种Bash命令。 我们的任务涉及在一个目录下执行各种命令,该目录下面还有许多文件夹。

我知道如何使用以下命令列出并计算根文件夹中的所有常规文件:

find . -type l | wc -l

但我想知道从哪里去找到整个目录中最大的文件。 我已经看到了一些关于du命令的问题,但我们还没有意识到这一点,所以在我们学习的东西中我假设我们需要以某种方式将它连接到ls -t命令。

如果我的'行话'不正确,请原谅我,我仍然习惯它!


从这个链接引用 -

如果您想查找并打印特定目录及其子目录中前10个最大的文件名称(而不是目录)

$ find . -printf '%s %pn'|sort -nr|head

要将搜索限制到当前目录,请使用“-maxdepth 1”和find。

$ find . -maxdepth 1 -printf '%s %pn'|sort -nr|head

并打印前10名最大的“文件和目录”:

$ du -a . | sort -nr | head

**使用“head -n X”而不是上面唯一的“head”来打印前X个最大的文件(在所有上面的例子中)


要查找当前目录及其子目录中的前25个文件,请执行以下操作:

find . -type f -exec ls -al {} ; | sort -nr -k5 | head -n 25

这将通过“sort -nr -k5”管道命令通过基于文件大小进行排序来输出前25个文件。


find . -type f | xargs ls -lS | head -n 1

输出

-rw-r--r--  1 nneonneo  staff  9274991 Apr 11 02:29 ./devel/misc/test.out

如果你只是想要文件名:

find . -type f | xargs ls -1S | head -n 1

这避免了使用awk并允许你在ls使用你想要的任何标志。

警告。 因为xargs试图避免构建超长的命令行,所以如果您在具有大量文件的目录上运行它,可能会失败,因为ls最终会执行多次。 这不是一个无法克服的问题(你可以从每个ls调用中收集head -n 1输出,然后再次运行ls -S ,直到你有一个文件),但是它确实有点损害了这种方法。

链接地址: http://www.djcxy.com/p/9809.html

上一篇: How to find the largest file in a directory and its subdirectories?

下一篇: Count number of lines in a git repository