如何在当前目录及其子目录中显示所有大于10k字节的文件。
尝试过ls -size +10k
但是没有起作用。
find . -size +10k -exec ls -lh {} \+
ls -lh
或列出(-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
有关find
中的 \; vs +更多内容。
此外,您可能希望按大小排序。这相对容易实现。我将-s
选项添加到ls
中,因此ls -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按大小对文件进行排序,而无需使用sort。但要查找最大的文件,您需要使用head命令。
find . -size +10k -exec ls -lS {} \+ | head -1
使用-S而不是sort
的好处有两点:一是您不必键入sort -n
;二是您还可以使用人类可读大小选项-h
。这是我最喜欢使用的选项之一,但在旧版本的ls
中不可用,例如我们工作中有一个没有-h
的旧CentOs 4服务器。
4.7.0-git
,因为它无法正常工作。在 4.7.0 上,我看到了目录、大小为 0 字节的文件、符号链接以及明显小于 10k 的文件。 - Ereli试试做这个:
find . -size +10k -ls
如果您想使用二进制ls
:
find . -size +10k -exec ls -l {} \;
ls -l . -size +10k
没有起作用。 - eveofind
带有 -ls 选项,不过我经常使用 find
带有 size 或 mtime。 - matchewfind . -size +10k
find . -size +10k -type f -maxdepth 1 -exec ls -lh {} \; > myLogFile.txt
-type f:指定常规文件类型
-maxdepth 1:确保它只在当前目录中查找文件。
ls -lR | egrep -v '^d' | awk '$5>10240{print}'
解释:
ls -lR # list recursivly
egrep -v '^d' # only print lines which do not start with a 'd'. (files)
只打印第五列(大小)大于10240字节的行:
awk '$5>10240{print}'
ls
没有任何过滤输出按大小的选项。它确实有一个--size
选项(没有参数),可以打印每个文件的块大小。顺便说一句,-size +10k
看起来像是与find
一起使用的语法。 - doubleDown