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