Command-Line

對目錄樹中的每個文件執行命令的最佳方式

  • May 4, 2013

似乎有很多方法可以做到這一點,包括 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如果它沒有輸入,它不會給你一個錯誤。

引用自:https://unix.stackexchange.com/questions/99