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