我的网络服务器空间不足,导致我在其上运行的WordPress网站出现问题。
我知道我有很多大的 .png 文件(事实上它是PNG本身就是一个错误,但让我们不要进入那个)。
我想获取服务器上的PNG 或JPEG文件列表,并通过减小大小对它们进行排序。我知道我可以使用ls -SlahR
,但排序是基于每个文件夹的。
然后我想出了find . -name "*.png" | xargs -i -n1 ls -lah {}
哪个可以,除了(a)它不对行进行排序和(b)它显示了我不太关心的文件权限和所有权。
那么有没有更好的呢?会产生 [size] [path_to_file] 的东西?
ter*_*don 10
你可以用 (GNU) find
and完成整个事情sort
,不需要du
:
$ find . -iname '*png' -printf '%s %p\n' | sort -rn
68109 ./7.png
21751 ./2.png
21751 ./1.png
5393 ./6.png
2542 ./5.png
1717 ./4.png
1003 ./3.png
878 ./10.png
793 ./9.png
587 ./8.png
Run Code Online (Sandbox Code Playgroud)
您可以使用find
,du
和的组合,sort
如下所示:
find <directory> -iname "*.png" -type f -print0 | xargs -0 -n1 du -b | sort -n -r
Run Code Online (Sandbox Code Playgroud)
这将搜索<directory>
以.png
(不区分大小写)结尾的所有常规文件。然后将结果传递给xargs
whichdu
对每个单个文件的调用,获取以字节为单位的大小(由于-b
)并传递给sort
,它按-n
文件大小以降序 ( -r
)对结果进行数字 ( ) 排序。将-print0
用于通过分离的结果\0
,而不是\n
,所以你可以有奇怪的字符,如空格和换行的路径。