Find
ls -lS 對 find 的輸出不進行排序
眾所周知,
ls -S
將列出所有按大小排序的文件。我要做的是列出
/usr
按大小排序的目錄中的所有文件。所以我執行瞭如下命令:find /usr -type f -exec ls -lS {} \;
但是,這個命令似乎沒有列出按大小排序的所有文件……
-S
在這裡不起作用。
您已明確要求
find
搜尋文件 (-type f
),當您找到一個文件時,您已要求它ls -lS
在其上執行。您甚至無法使用 GNU 查找副檔名+
來解決此問題,以一次傳遞多個匹配文件,因為可能(可能)有太多文件無法ls
一次傳遞。相反,使用 GNU find,要求它列印文件的大小和文件名,然後將其傳遞給
sort
,全部以空分隔。find /usr -type f -printf "%s %p\n\0"|sort -zn
樣本輸出:
0 /usr/lib/python2.7/dist-packages/pkg_resources/_vendor/__init__.py 0 /usr/lib/python2.7/dist-packages/python_debian-0.1.30.egg-info/requires.txt 0 /usr/lib/python2.7/email/mime/__init__.py ... output omitted ... 24013304 /usr/lib/gcc/i686-linux-gnu/6/cc1plus 25675008 /usr/lib/i386-linux-gnu/libicudata.so.57.1 49547156 /usr/lib/i386-linux-gnu/libLLVM-3.9.so.1