首頁體育 > 正文

linux系統中xargs命令的使用方式

2021-11-06由 首席資訊觀察員 發表于 體育

xargs 是給命令傳遞引數的一個過濾器,可以將管道或標準輸入的資料轉換成引數,預設的命令是 echo,這意味著透過管道傳遞給 xargs 的輸入將會包含換行,不過透過 xargs 的處理,換行將被空格取代。

如何使用xargs命令

語法:

舉一個例子:我們用管道符傳輸到xargs,併為每個引數執行touch命令,-t表示在執行之前先列印,建立三個檔案:

如何限制引數的數量

預設情況下,傳遞給命令的引數數量由系統限制決定。-n選項指定要傳遞給命令的引數個數。xargs根據需要多次執行指定的命令,直到所有引數都用完為止。

下面例子指定每次傳遞一個引數:

如何執行多個命令

要使用xargs執行多個命令,請使用-i或者-I選項。在-i或者-I後面自定義一個傳遞引數符號,所有匹配的項都會替換為傳遞給xargs的引數。

下面例子時xargs執行兩條命令,先touch建立檔案,然後ls列出來:

如何指定一個分隔符

使用-d或者——delimiter選項設定自定義分隔符,可以是單個字元,也可以是以\\ 開頭的跳脫字元。

下面例子使用#做分隔符,echo命令使用了-n選項,意思是不輸出新行:

如何從檔案中讀取條目

xargs命令還可以從檔案讀取條目,而不是從標準輸入讀取條目。使用-a選項,後跟檔名。建立一個ip。txt的檔案,一會使用xargs命令ping裡面的每一個地址:

使用-L 1選項,該選項表示xargs一次讀取一行。如果省略此選項,xargs將把所有ip傳遞給一個ping命令。

xargs與find一起使用

xargs通常與find命令結合使用。您可以使用find搜尋特定檔案,然後使用xargs對這些檔案執行操作。

若要避免包含換行符或其他特殊字元的檔名出現問題,請始終使用find的-print0選項,這樣可以使find列印完整的檔名,配合xargs命令使用-0或者——null選項可以正確的解釋。

下面例子中,查詢log資料夾下面的型別為file的所有檔案,打包壓縮起來:

總結

之所以能用到這個命令,關鍵是由於很多命令不支援管道符來傳遞引數,xargs可以解決這個問題,而且使用起來很方便,跟能強大。

頂部