使用ls -lSrh
我得到这个输出:
-rw-rw-r-- 1 a a 2.4K Feb 15 04:44 10010.png
-rw-rw-r-- 1 a a 2.4K Feb 15 04:43 1000.png
-rw-rw-r-- 1 a a 2.4K Feb 15 04:44 10009.png
-rw-rw-r-- 1 a a 2.4K Feb 15 04:44 10008.png
-rw-rw-r-- 1 a a 2.4K Feb 15 04:43 10004.png
-rw-rw-r-- 1 a a 2.4K Feb 15 04:43 10000.png
如何删除所有.png
特定2.4K
大小的文件?
答案1
Bodo 的评论为你指明了正确的方向,但事情比看起来要复杂一些。这是因为你在输出中看到的文件大小ls -lSrh
不是文件的确切大小,而是人类可读的格式,因为使用了-h
标志。但是,要使用find
查找特定文件大小的文件,您需要知道确切尺寸文件,因此您需要运行以下命令:
ls -lSr
这是ls
您使用的命令,但没有-h
标志,它以字节为单位输出文件大小。
如果您运行此命令,那么您很可能会发现,以前看起来大小完全相同的所有这些文件2.4K
现在大小略有不同。您需要做的是确定要删除的文件的下限和上限,然后find
在文件所在的目录中运行以下命令:
find . -type f -name "*.png" -size +<lower_limit>c -size -<upper_limit>c -delete
上述命令的解释:
.
:在当前目录中搜索。-type f
:仅搜索文件,不搜索目录。-name "*.png"
:搜索名称以 结尾的文件.png
。-size +<lower_limit>c -size -<upper_limit>c
:搜索大小介于 和 之间的文件<lower_limit>
,<upper_limit>
换句话说,搜索大于<lower_limit>
(就是这个+
意思)且小于<upper_limit>
(就是这个-
意思)的文件。和c
后面的后缀用于表示大小以字节为单位,这就是您从 获得的文件大小。<lower_limit>
<upper_limit>
find
ls -lSr
-delete
:删除找到的符合以上条件的文件。
警告:
首先运行上述命令以-delete
确保它列出了正确的文件!如果您对输出满意,那么才添加-delete
!
此-delete
操作将永久删除找到的文件,因此一旦发生错误,您将无法恢复它们。请务必保留原始文件的备份,以防万一。
参考: