題 如何在所有子文件夾中刪除小於特定大小的所有文件?


我有一個包含許多子文件夾的文件夾,其中包含較小的tif文件(小於160kb),這些文件已經在更大的pdf文件中合併在一起,還有一些大的多頁tif文件。

我想刪除所有小的tif文件而不刪除較大的文件(tif或pdf)並保留目錄結構。如何使用命令行在Linux上進行此操作?


72
2017-09-12 09:57


起源




答案:


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


125
2017-09-12 10:04



ubuntu手冊頁似乎提到了這一點。在“TESTS”部分的下方:數字參數可以指定為+ n表示大於n,-n表示小於n,n表示正好n。 - jdg
謝謝。我沒有想到信息可能在聯機幫助頁中的其他位置。 - lesmana
很好,這個命令也可以遞歸地工作。我的用例是刪除12kB以下的.txt文件。 - Sun
不需要sudo? - Jean-François Gagnon
對於以字節為單位的大小,請指定50c,而不是50b或50! - Evengard