xargs
是一個用於從標準輸入中讀取參數列表並將其傳遞給命令的實用程序。它通常用於將一個命令的輸出作爲另一個命令的輸入。下面是 xargs
的基本使用方法:
bashCopy code
<command> | xargs <other command>
是一個產生輸出的命令,它的輸出將作爲
的參數列表。例如,要查找當前目錄下所有擴展名爲 .txt
的文件並將它們刪除,可以使用以下命令:
bashCopy code
find . -name "*.txt" | xargs rm
在上面的命令中,find . -name "*.txt"
查找所有擴展名爲 .txt
的文件,並將它們的文件名輸出到標準輸出。xargs rm
從標準輸入中讀取文件名列表,並將它們傳遞給 rm
命令,以刪除這些文件。
下面是 xargs
的一些常用參數:
-
-I
:指定一個替換字符串來代替輸入中的參數。bashCopy code echo "one two three" | xargs -I {} echo {}
輸出爲:
sqlCopy code one two three
在上面的命令中,
-I {}
指定使用{}
替換輸入中的參數。echo {}
會將每個參數作爲單獨的行輸出。 -
-n
:指定每個命令執行時使用的參數數目。bashCopy code echo "one two three" | xargs -n 2 echo
輸出爲:
sqlCopy code one two three
在上面的命令中,
-n 2
指定每次執行echo
命令時使用兩個參數。 -
-0
:指定輸入參數列表使用 null 分隔符,而不是默認的空格分隔符。bashCopy code find . -name "*.txt" -print0 | xargs -0 rm
在上面的命令中,
find
命令的輸出中的文件名使用 null 分隔符,xargs -0 rm
命令告訴xargs
使用 null 分隔符來讀取文件名列表。 -
-t
:打印命令行中實際執行的命令,以便調試。bashCopy code echo "one two three" | xargs -t echo
輸出爲:
sqlCopy code echo one two three one two three
在上面的命令中,
-t
選項告訴xargs
輸出實際執行的命令。 -
-p
:在執行每個命令之前詢問用戶是否要繼續。bashCopy code echo "one two three" | xargs -p echo
輸出爲:
bashCopy code echo one two three ?...
在上面的命令中,
-p
選項會在執行命令之前詢問用戶是否要繼續。 -
-r
:當沒有輸入參數時,避免執行命令。這可以避免在沒有參數時意外地執行命令。bashCopy code echo "" | xargs -r echo
在上面的命令中,
-r
選項告訴xargs
當沒有輸入參數時不要執行echo
命令。 -
-s
:指定每個命令行使用的最大字符數。如果命令行超過這個限制,xargs
將分割它們成多個命令行。bashCopy code echo "one two three" | xargs -s 5 echo
輸出爲:
sqlCopy code one two thr ee
在上面的命令中,
-s 5
選項指定每個命令行最多使用 5 個字符。因此,xargs
將one two three
分割成了四個命令行。 -
--delimiter
:指定輸入參數列表使用的分隔符。bashCopy code echo "one,two,three" | xargs --delimiter=',' echo
輸出爲:
sqlCopy code one two three
在上面的命令中,
--delimiter=','
指定,
作爲輸入參數列表的分隔符。 -
-x
:如果命令行長度超過系統限制,則退出而不是分割命令行。bashCopy code echo "one two three" | xargs -x echo
在上面的命令中,
-x
選項指定如果命令行長度超過系統限制,則退出而不是分割命令行。
以上是 xargs
的一些常用參數。請注意,xargs
命令的選項和參數可以因操作系統和版本而異。可以通過 man xargs
命令來查看本地系統上 xargs
命令的完整幫助文檔。