一尘不染

列出当前目录和所有子目录中特定大小的文件

linux

如何在当前目录及其子目录中显示所有大于10k字节的文件。

尝试过,ls -size +10k但是没有用。


阅读 398

收藏
2020-06-07

共1个答案

一尘不染

find . -size +10k -exec ls -lh {} \+

第一部分与@sputnicks答案相同,并成功查找目录中超过10k的所有文件(不要将k与K混淆),我的补充是,第二部分然后执行ls -lh或ls列出(-l)文件通过人类可读的大小(-h)。如果愿意,可以取反h。当然{}是文件本身,而\+仅仅是文件的替代\;

在实践中\;会重复或:

ls -l found.file; ls -l found.file.2; ls -l found.file.3

将其\+显示为一条语句或:

ls -l found.file found.file.2 found.file.3

更多\; vs +find

另外,您可能希望按大小排序清单。这是相对容易实现的。我可以-s选择lsls -ls然后将其通过管道sort -n进行数字排序

变成:

find . -size +10k -exec ls -ls {} \+ | sort -n

或以相反的顺序添加-r:

find . -size +10k -exec ls -ls {} \+ | sort -nr

最后,标题说在目录中找到 最大的 文件。您可以通过将代码通过管道传递到tail

find . -size +10k -exec ls -ls {} \+ | sort -n | tail -1 会在目录及其子目录中找到最大的文件。

请注意,您还可以使用-S按大小对文件进行排序,并且不需要排序。但要找到最大的文件,您将需要使用head这样

find . -size +10k -exec ls -lS {} \+ | head -1

使用-S而不是-S的好处sort是,您不必键入,sort -n而您也可以使用-h人类可读的size选项来输入。这是我最喜欢使用的工具之一,但不适用于的旧版本ls,例如,我们有一个工作中的旧centOs
4服务器,而该服务器没有-h

2020-06-07