
我想找到(稍後刪除)所有幾乎為空的音樂資料夾(Banshee 僅刪除音樂文件,但不刪除其中的其他文件)。
我嘗試過:
find -type d -size -500k \;
但它也顯示包含更大文件的資料夾。
find -type d -size -500k -exec du {} \;
顯示正確的尺寸。
如何修改 find cmd 以僅顯示小於 N 的資料夾?
答案1
只要您不需要將其直接通過管道傳輸到另一個腳本中,我使用的一個命令是
杜。 |排序-rn
這會將最小的資料夾及其大小放在列印清單的底部。過濾掉較大的需要更多的工作。
答案2
如果您只想刪除包含 N 個位元組以下的資料夾,則可以使用以下行:
du | awk '$1 <= 500 { print "rm -rf \"" substr($0, length($1)+2) "\""}' | sh
這是做什麼的?連續:
du
列印目錄的大小及其路徑$1 <= 500
是測試第一列是否低於 500 的條件(如果它小於 500 位元組)print
在 awk 列印中rm -rf "/path/to/small/dir"
| sh
透過管道將其輸入 sh 以便可以執行
您也可以使用 xargs 來完成此操作,而不是透過管道將其輸入 sh,但我已經習慣了這種方式。