xargs命令的作用是將參數(shù)列表轉(zhuǎn)換成小塊分段傳遞給其他命令,以避免參數(shù)列表過(guò)長(zhǎng)的問(wèn)題。一般與管道符搭配使用,xargs的默認(rèn)動(dòng)作是echo,默認(rèn)分隔符為空白字符(空格,TAB,換行符)。
參數(shù)選項(xiàng)
-0,--null:以\0作為分隔符,接受到的特殊字符將當(dāng)作文本符號(hào)處理;
-d:指定分段的分隔符,默認(rèn)分隔字符為空白字符;
-a,--arg-file=file:指定命令標(biāo)準(zhǔn)輸入的來(lái)源文件;
-e'FLAG' 或者-E 'FLAG':指定一個(gè)終止符號(hào),當(dāng)xargs命令匹配到第一個(gè)FLAG后,停止傳遞,并退出命令;
-p:每當(dāng)xargs執(zhí)行一個(gè)分段時(shí),詢(xún)問(wèn)一次用戶(hù)是否執(zhí)行;
-t:表示先打印執(zhí)行的命令再輸出;
-n NUM:表示一個(gè)分段包含的參數(shù)個(gè)數(shù),參數(shù)之間以分隔符隔開(kāi),默認(rèn)是將所有的參數(shù)當(dāng)作一個(gè)分段輸出;
-i:用于將分段分批傳遞給其后的{}進(jìn)行輸出,分段會(huì)替換{}所在的位置進(jìn)行輸出;
-I "FLAG":可指定分段的替換符號(hào),分段會(huì)分批替換到符號(hào)所在的位置進(jìn)行輸出執(zhí)行;
-L:指定每次執(zhí)行的最大的非空行的行數(shù);
xargs命令與管道符的區(qū)別
管道符“|” 是將作為
來(lái)使用;而xargs命令是將
作為
而使用;
常用選項(xiàng)
1. -I
$cat foo.txt
one
two
three
$cat foo.txt | xargs -I file sh -c 'echo file; mkdir file'
one
two
three
2. -i
cat foo.txt | xargs -i touch {}.txt
$ls
foo.txt one.txt three.txt two.txt