功能介紹:man文件介紹為:從標準輸入重建並執行命令列。xargs是可以讀入stdin的資料,並且以空白符或斷行字元進行分辨,將stdin的資料分割成為arguements。因為是以空格符作為分隔,所以,如果有一些檔名或者其他意義的名詞內含空格符的時候,xargs可能就會誤判了。
xargs選項表:選項
銜接的引數及意義
-o如果輸入的stdin含有特殊字元,例如`,\,空格鍵等字元時,這個引數可以將它還原成一般字元。這個引數可以用於特殊狀態
-e這個是eof(end of file)的意思。後面可以接乙個字串,當xargs分析到這個字串時,就會停止繼續工作
-p當執行每個命令的引數時,都會詢問使用者的意思;可以與-n一起使用,在執行指定的次數命令的引數時,詢問使用者的意思
-n後面銜接次數,每次command命令執行時,要使用幾個引數的意思
-i該引數可以類似於find中的{},具體意思看後面案例2就會明白
當xargs沒有銜接任何命令時,預設以echo來進行輸出。
使用案例:
# 案例前提
]# ls /tmp/file*
/tmp/file1 /tmp/file2 /tmp/file3 /tmp/file4 /tmp/file5
# 案例1:不加選項的使用結果
]# ls /tmp/file* | head -n2 | xargs stat
檔案:"/tmp/file1"
大小:0 塊:0 io 塊:4096 普通空檔案
許可權:(0644/-rw-r--r--) uid:( 0/ root) gid:( 0/ root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2019-03-16 14:39:25.102089231 +0800
最近更改:2019-03-16 14:39:25.102089231 +0800
最近改動:2019-03-16 14:39:49.388367674 +0800
檔案:"/tmp/file1_new"
大小:0 塊:0 io 塊:4096 普通空檔案
許可權:(0644/-rw-r--r--) uid:( 0/ root) gid:( 0/ root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2019-03-16 15:13:55.190823010 +0800
最近更改:2019-03-16 15:13:55.190823010 +0800
最近改動:2019-03-16 15:13:55.190823010 +0800
# 案例2:-i選項的使用
]# ls /tmp/file* | xargs -i touch {}_new
[root@localhost test]# ll /tmp/file*_new
-rw-r--r--. 1 root root 0 3月 16 15:13 /tmp/file1_new
-rw-r--r--. 1 root root 0 3月 16 15:13 /tmp/file2_new
-rw-r--r--. 1 root root 0 3月 16 15:13 /tmp/file3_new
-rw-r--r--. 1 root root 0 3月 16 15:13 /tmp/file4_new
-rw-r--r--. 1 root root 0 3月 16 15:13 /tmp/file5_new
# 案例3:案例1加-p選項(注意觀察輸出結果第一行的互動)
]# ls /tmp/file* | head -n2 | xargs -p stat
stat /tmp/file1 /tmp/file1_new ?...y
檔案:"/tmp/file1"
大小:0 塊:0 io 塊:4096 普通空檔案
許可權:(0644/-rw-r--r--) uid:( 0/ root) gid:( 0/ root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2019-03-16 14:39:25.102089231 +0800
最近更改:2019-03-16 14:39:25.102089231 +0800
最近改動:2019-03-16 14:39:49.388367674 +0800
檔案:"/tmp/file1_new"
大小:0 塊:0 io 塊:4096 普通空檔案
許可權:(0644/-rw-r--r--) uid:( 0/ root) gid:( 0/ root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2019-03-16 15:13:55.190823010 +0800
最近更改:2019-03-16 15:13:55.190823010 +0800
最近改動:2019-03-16 15:13:55.190823010 +0800
# 案例4:案例3加-n選項(注意輸出結果中的互動變多了)
]# ls /tmp/file* | head -n2 | xargs -p -n1 stat
stat /tmp/file1 ?...y
stat /tmp/file1_new ?... 檔案:"/tmp/file1"
大小:0 塊:0 io 塊:4096 普通空檔案
許可權:(0644/-rw-r--r--) uid:( 0/ root) gid:( 0/ root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2019-03-16 14:39:25.102089231 +0800
最近更改:2019-03-16 14:39:25.102089231 +0800
最近改動:2019-03-16 14:39:49.388367674 +0800
y 檔案:"/tmp/file1_new"
大小:0 塊:0 io 塊:4096 普通空檔案
許可權:(0644/-rw-r--r--) uid:( 0/ root) gid:( 0/ root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2019-03-16 15:13:55.190823010 +0800
最近更改:2019-03-16 15:13:55.190823010 +0800
最近改動:2019-03-16 15:13:55.190823010 +0800
//案例4用-n指定了互動次數,但是顯示的結果有些混亂,注意觀察輸出結果第2行和第11行的y,第二次互動在第一次互動得到輸出結果之前就顯示了,可能我描述的不是很清楚,但自己測試一下這個過程就知道我想說什麼了。
# 案例5:-e選項使用
]# ls /tmp/file* | xargs -e"/tmp/file3" stat
檔案:"/tmp/file1"
大小:0 塊:0 io 塊:4096 普通空檔案
許可權:(0644/-rw-r--r--) uid:( 0/ root) gid:( 0/ root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2019-03-16 14:39:25.102089231 +0800
最近更改:2019-03-16 14:39:25.102089231 +0800
最近改動:2019-03-16 14:39:49.388367674 +0800
檔案:"/tmp/file2"
大小:0 塊:0 io 塊:4096 普通空檔案
許可權:(0644/-rw-r--r--) uid:( 0/ root) gid:( 0/ root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2019-03-16 14:39:26.300102966 +0800
最近更改:2019-03-16 14:39:26.300102966 +0800
最近改動:2019-03-16 14:39:49.388367674 +0800
xargs最重要的功能還是和find一起使用,find是一次性查詢符合條件的所有檔案,並一同傳遞給-exec或-ok後面指定的命令,但有些命令不能接收過長的引數,此時就需要使用到xargs了,xargs的資料自動分隔功能以及-n引數可以很好的解決這個問題。
本部落格參考:《鳥哥的linux私房菜基礎學習篇》
xargs命令的使用
xargs命令是給其他命令傳遞引數的乙個過濾器,也是組合多個命令的乙個工具。它擅長將標準輸入資料轉換成命令列引數,xargs能夠處理管道或者stdin並將其轉換成特定命令的命令引數。xargs也可以將單行或多行文字輸入轉換為其他格式,例如多行變單行,單行變多行。xargs的預設命令是echo,空格是...
Linux中,xargs命令的使用
xargs程式允許你從標準輸入生成和執行命令,它通常通過管道與其他命令結合使用。使用xargs,您可以提供標準輸入作為命令列實用程式 例如mkdir和rm 的引數。在本教程中,介紹使用xargs命令的基本知識。xargs從標準輸入讀取引數,用空格或換行符分隔,並使用輸入作為命令的引數執行指定的命令,...
高階命令 xargs命令
xargs命令 linux 命令大全 xargs 英文全拼 extended arguments 是給命令傳遞引數的乙個過濾器,也是組合多個命令的乙個工具。xargs 可以將管道或標準輸入 stdin 資料轉換成命令列引數,也能夠從檔案的輸出中讀取資料。xargs 也可以將單行或多行文字輸入轉換為其...