![例如,我如何列出 /usr/lib 目录中的五个最大文件?](https://linux22.com/image/4101/%E4%BE%8B%E5%A6%82%EF%BC%8C%E6%88%91%E5%A6%82%E4%BD%95%E5%88%97%E5%87%BA%20%2Fusr%2Flib%20%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E4%BA%94%E4%B8%AA%E6%9C%80%E5%A4%A7%E6%96%87%E4%BB%B6%EF%BC%9F.png)
例如,我如何列出/usr/lib
目录中五个最大的文件?
还请为您正在使用的每一段代码添加一些小的解释。
答案1
最简单的方法是简单地按大小排序并打印最后 5 行:
ls -Sr /usr/lib | tail -n 5
从man ls
:
-r, --reverse
reverse order while sorting
-S sort by file size
tail
只打印文件的最后 N 行:
-n, --lines=K
output the last K lines, instead of the last 10; or use -n +K to
output lines starting with the Kth
如果您还想检查子目录中的文件,您可以这样做:
find /usr/lib -type f -ls | sort -gk7 | tail -n 5
该find
命令查找文件,来自man find
:
-type c
File is of type c:
[ ... ]
f regular file
-ls True; list current file in ls -dils format on standard output.
The block counts are of 1K blocks, unless the environment vari‐
able POSIXLY_CORRECT is set, in which case 512-byte blocks are
used. See the UNUSUAL FILENAMES section for information about
how unusual characters in filenames are handled.
sort
做你所期望的,它对输入进行排序。从man sort
:
-g, --general-numeric-sort
compare according to general numerical value
-k, --key=KEYDEF
sort via a key; KEYDEF gives location and type
因此,排序-g
使其按数字顺序排序,并-k7
使其在第 7 个字段上排序,在 的情况下find -ls
,该字段是文件的大小。
这应该相对稳健,并且对于带有空格或奇怪字符的文件名没有问题。无论如何,由于您正在搜索,/usr/lib
因此不太可能出现奇怪的文件名。
答案2
LS-LSR| tail -5
这会起作用
-r 用于反向 -l 用于长列表 -S 是按文件大小排序的选项。