使用Mac OS X本機工具只能查找和刪除空文件(零字節)的最簡單/最好的方法是什麼?刪除空文件(零字節)
回答
足夠簡單:
find . -type f -size 0 -exec rm -f '{}' +
要忽略其XATTR內容(假設MacOS的find
實現)的任何文件:
find . -type f -size 0 '!' -xattr -exec rm -f '{}' +
不過,請注意,許多xattrs並不是特別有用(例如,所有下載的文件上都存在com.apple.quarantine
)。
find /path/to/stuff -empty
如果這就是你要找的文件列表,然後使命令:
find /path/to/stuff -empty -exec rm {} \;
要小心!沒有辦法解決這個問題!
比使用+更好;如果你有一個當前的發現 - 那樣它就會像xargs一樣在行事。 – 2009-02-13 01:50:31
用途:
find . -type f -size 0b -exec rm {} ';'
與所有其他可能的變化來限制被刪除。
可以降低叉的潛在的巨大數量的運行由/斌/ RM:
find . -type f -size 0 -print0 | xargs -0 /bin/rm -f
上面的命令是非常便攜,在大多數版本的Unix,而不是僅僅的Linux機器上運行,並在版本Unix可以回溯數十年。對於長文件列表,可能會執行幾個/bin/rm
命令來防止列表超出命令行長度限制。
類似的效果可以用更少的打字更近的操作系統來實現,使用在find
+
更換最常用的xargs
的風格還是適合於其他動作之外/bin/rm
。在這種情況下,find
將處理將真正長的文件列表拆分爲單獨的/bin/rm
命令。通常引用{}
以防止殼體對其做任何事情;引號並不總是必需的,但shell引用的複雜性可能過於棘手,在這裏介紹的,所以當有疑問,包括引號:
find . -type f -size 0 -exec /bin/rm -f '{}' +
在Linux中,簡短的方法通常可使用-delete
。請注意,最近的find
的-delete
主要是直接使用unlink
(2)實現的,並且不會產生zillion /bin/rm
命令,或者甚至是少數幾個,即xargs
和+
。 Mac OS find
也具有-delete
和-empty
初選。
find . -type f -empty -delete
踩空(和新清空)的文件 - 目錄,以及 - 許多現代的Linux主機可以使用這種有效的方法:
find . -empty -delete
請澄清!一個文件是空的,所有空文件?你試過什麼,錯誤在哪裏? – hop 2009-02-13 02:39:26
對我的回答的評論澄清了這個問題;適當更新。 – 2009-02-13 05:09:19
謝謝Charles Duffy。對不起,我的英文不好:p – Bank 2009-02-13 12:32:06