Command-Line
對目錄樹中的每個文件執行命令的最佳方式
似乎有很多方法可以做到這一點,包括 shell 腳本中的循環、find 和 xargs。其中哪個最好,哪個最便攜?
find . -exec <command> {} \;
將目前目錄作為樹的根目錄或一般情況下:
find <directory> -exec <command> {} \;
如果您有帶空格的文件或目錄名稱,請使用
-print0
查找選項和-0
選項:xargs
find {dir} -print0 | xargs -0r {command}
find 選項將
-print0
文件名列印為 -NUL
分隔而不是空格分隔的列表,而-0
選項xargs
指示它在NUL
而不是空格上中斷其輸入。由於NUL
是 Unix 文件名中不允許使用的字元之一,因此無法將其誤認為是文件名的一部分。該
-r
選項在那裡,xargs
如果它沒有輸入,它不會給你一個錯誤。