如何删除特定大小的文件?

如何删除特定大小的文件?

使用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>findls -lSr

  • -delete:删除找到的符合以上条件的文件。


警告:

首先运行上述命令以-delete确保它列出了正确的文件!如果您对输出满意,那么才添加-delete

-delete操作将永久删除找到的文件,因此一旦发生错误,您将无法恢复它们。请务必保留原始文件的备份,以防万一。


参考:

相关内容