如何找到非空的小資料夾?

如何找到非空的小資料夾?

我想找到(稍後刪除)所有幾乎為空的音樂資料夾(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,但我已經習慣了這種方式。

相關內容