如何在所有子文件夹中删除小于特定大小的所有文件?


80

我有一个包含许多子文件夹的文件夹,其中包含较小的tif文件(小于160kb),这些文件已经在更大的pdf文件中合并在一起,还有一些大的多页tif文件。

我想删除所有小的tif文件而不删除较大的文件(tif或pdf)并保留目录结构。如何使用命令行在Linux上进行此操作?

Answers:


138
find . -name "*.tif" -size -160k -delete

不用运行命令 -delete 首先验证是否找到了正确的文件。

请注意 - 之前 160k。只是 160k 意味着正好160千字节。 -160k 意味着小于160千字节。 +160k 意味着大于160千字节。

如果要以字节为单位过滤大小(如160字节而不是160千字节),则必须按如下方式编写: 160c。如果你只是写 160 它将被解释为160 * 512字节。这是POSIX的一个奇怪的要求。阅读此处了解更多详情: https://unix.stackexchange.com/questions/259208/purpose-of-find-commands-default-size-unit-512-bytes


ubuntu手册页似乎提到了这一点。在“TESTS”部分的下方:数字参数可以指定为+ n表示大于n,-n表示小于n,n表示正好n。
jdg

1
谢谢。我没有想到信息可能在联机帮助页中的其他位置。
lesmana

很好,这个命令也可以递归地工作。我的用例是删除12kB以下的.txt文件。
Sun

不需要sudo?
Jean-François Gagnon

10
对于以字节为单位的大小,请指定50c,而不是50b或50!
Evengard
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.