xargs命令使用

2021-09-12 17:29:17 字數 4534 閱讀 2511

功能介紹: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 也可以將單行或多行文字輸入轉換為其...