一、xargs 命令是什么?
該xargs命令構建并執行通過標準輸入提供的命令。它接受輸入并將其轉換為另一個命令的命令參數。此功能在文件管理中特別有用,可與rm、cp、mkdir和其他類似命令結合使用。
二、使用 xargs 命令示例
單獨使用時,xargs提示用戶輸入文本字符串,然后將其傳遞給echo命令。
該示例顯示了示例輸入,后面是命令的輸出echo。
1、將 xargs 與 find 結合起來
find 命令通常位于xargs管道中。使用它提供文件列表以供進一步處理xargs。語法如下:
find [location] -name "[search-term]" -type f | xargs [command]
上面的示例演示了使用該find命令查找具有.sh擴展名的所有文件。然后將文件列表通過管道傳送到xargs,后者使用該rm命令來刪除它們。
但是,xargs不會自動包含名稱中包含空格的文件。要也包含這些文件,請使用-print0選項find和-0選項xargs:
find [location] -name "[search-term]" -type f -print0 | xargs -0 [command]
rm現在刪除所有具有擴展名的文件.sh。
2、將 xargs 與 grep 結合使用
xargs與grep 命令一起使用 可在該命令提供的文件列表中搜索字符串find。
find . -name '[search-term]' | xargs grep '[string-to-find-in-files]'
上面的示例搜索具有.txt擴展名的所有文件并將它們通過管道傳輸到xargs,然后grep對它們執行命令。
3、多個Xargs命令
要使用 運行多個命令xargs,請使用-I選項。語法是:
[command-providing-input] | xargs -I % sh -c '[command-1] %; [command-2] %'
file4.txt在示例中,首先顯示的內容。然后mkdir為文件中的每個單詞創建一個文件夾。
4、從文件中讀取內容
如前所述,xargs讀取標準輸入。使用該-a選項來讀取文件的內容。
xargs -a [filename]
5、find和tar搭配
與tar 命令一起使用時,xargs創建tar.gz存檔并用該命令提供的文件填充它find。
find [location] -name "[search-term]" -type f -print0 | xargs -0 tar -cvzf [tar-gz-archive-name]
6、打印命令
xargs要查看標準輸出中執行的命令,請使用-t選項。
[command-providing-input] | xargs -t [command]
在上面的示例中,請注意對提供的整個字符串xargs執行了mkdir 命令
7、xargs 命令交互式執行
些xargs操作(例如刪除文件和文件夾)是不可逆的。要控制這些命令的執行,請使用該-p選項。
[command-providing-input] | xargs -p [command]
當您使用該選項執行命令時-p,xargs會在執行之前顯示一條確認行。鍵入y以繼續,或n取消操作。
8、限制每行輸出
有時需要控制xargs同時接受的參數數量。-n使用后跟您限制的參數數量的選項來執行此操作xargs :
[command-providing-input] | xargs -n [number] [command]
在下面的示例中,xargs從命令中獲取字符串echo并將其拆分為三個。echo然后它為每個部分執行另一個:
9、指定分割符
默認xargs分隔符是空格。要更改默認分隔符,請使用-d后跟單個字符或轉義字符(例如n(新行))的命令。
[command-providing-input] | xargs -d [new-delimiter] | xargs [command]
在下面的示例中,該xargs 命令指示系統用作*分隔符并應用于mkdir每個獲得的參數。
10、刪除字符串中的空格
由于xargs在查找參數時忽略空格,因此該命令對于從字符串中刪除不必要的空格很有用。
echo "[string-with-unnecessary-spaces]" | xargs
11、列出每個文件中的行數/字數/字符數
xargs與wc 命令一起使用可顯示文件列表,其中包含行數、單詞數和字符數。
ls | xargs wc
下面的示例指示ls 命令僅通過管道傳輸到xargs包含單詞“example”的文件。xargs然后應用于wc該列表:
12、將文件復制到多個目錄
使用命令將文件復制到多個目錄xargs。語法很簡單:
echo [directory-1] [directory-2] | xargs -n 1 cp -v [filename]
該echo命令提供目錄名稱,并xargs使用cp 命令將給定文件復制到每個目錄中。