如何在当前目录及其子目录中显示所有大于 10k 字节的文件。
试过ls -size +10k
了,但没有奏效。
find . -size +10k -exec ls -lh {} \+
第一部分与@sputnicks 答案相同,并成功找到目录中超过 10k 的所有文件(不要将 k 与 K 混淆),我的补充是,第二部分然后执行ls -lh
或 ls 列出(-l)文件按人类可读大小(-h)。如果您愿意,请否定 h。当然 the{}
是文件本身,而 the\+
只是替代\;
在实践中\;
会重复或:
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
选择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 按大小对文件进行排序,并且不需要排序。但是要找到最大的文件,您需要使用 head 所以
find . -size +10k -exec ls -lS {} \+ | head -1
使用 -S 而不是这样做的好处sort
是一,您不必键入sort -n
,二您还可以使用-h
人类可读的大小选项。这是我最喜欢使用的一种,但不适用于旧版本的ls
,例如我们有一个旧的 centOs 4 服务器在工作-h
尝试这样做:
find . -size +10k -ls
如果你想使用二进制ls
:
find . -size +10k -exec ls -l {} \;
我意识到这项任务可能早就结束了。对于其他任何人:
你太复杂了。
find . -size +10k
我将添加到@matchew 答案(没有足够的业力点来评论):
find . -size +10k -type f -maxdepth 1 -exec ls -lh {} \; > myLogFile.txt
-type f :指定常规文件类型
-maxdepth 1 :确保它只查找当前目录中的文件
你可以这样使用ls:
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}'