linux xargs 管道命令

2022-07-31 11:18:06 字數 1733 閱讀 4566

xargs 又稱管道命令,構造引數等。

是給命令傳遞引數的乙個過濾器,也是組合多個命令的乙個工具 它把乙個資料流分割為一些足夠小的塊,以方便過濾器和命令進行處理 。

簡單的說 就是把 其他命令的給它的資料 傳遞給它後面的命令作為引數。

-i          用 {} 代替 傳遞的資料

-i string 用string來代替傳遞的資料-n[數字] 設定每次傳遞幾行資料

-n 選項限制單個命令列的引數個數

-t 顯示執行詳情

-p 互動模式

-p n 允許的最大執行緒數量為n

-s[大小] 設定傳遞引數的最大位元組數(小於131072位元組)

-x 大於 -s 設定的最大長度結束 xargs命令執行

在使用 find命令的-exec選項處理匹配到的檔案時, find命令將所有匹配到的檔案一起傳遞給exec執行。但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令執行幾分鐘之後,就會出現溢位錯誤。錯誤資訊通常是「引數列太長」或「引數列溢位」。這就是xargs命令的用處所在,特別是與find命令一起使用。

find命令把匹配到的檔案傳遞給xargs命令,而xargs命令每次只獲取一部分檔案而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分檔案,然後是下一批,並如此繼續下去。

在有些系統中,使用-exec選項會為處理每乙個匹配到的檔案而發起乙個相應的程序,並非將匹配到的檔案全部作為引數一次執行;這樣在有些情況下就會出現程序過多,系統效能下降的問題,因而效率不高; 而使用xargs命令則只有乙個程序。另外,在使用xargs命令時,究竟是一次獲取所有的引數,還是分批取得引數,以及每一次獲取引數的數目都會根據該命令的選項及系統核心中相應的可調引數來確定。

find . -type f -print | xargs file
find / -name "core" -print | xargs echo "" >/tmp/core.log
執行命令後,資料夾scf、test3和test4的許可權都發生改變

find . -perm -7 -print | xargs chmod o-w
find . -type f -print | xargs grep "hostname"
\用來取消find命令中的*在shell中的特殊含義。

find . -name \* -type f -print | xargs grep "hostnames"
find . -name "*.log" | xargs -i mv {} test4
-l1是一次處理乙個;-t是處理之前列印出命令

find . -type f -atime +0 -print0 | xargs -0 -l1 -t rm -f
使用-i引數預設的前面輸出用{}代替,-i引數可以指定其他代替字元,如例子中的

find . -name "file" | xargs -i  cp  ..
-p引數會提示讓你確認是否執行後面的命令,y執行,n不執行。

find . -name "*.log" | xargs -p -i mv {} ..

Linux xargs命令詳解

xargs用法詳解 1.簡介 之所以能用到這個命令,關鍵是由於很多命令不支援 管道來傳遞引數,而日常工作中有有這個必要,所以就有了xargs命令,例如 find sbin perm 700 ls l 這個命令是錯誤的 find sbin perm 700 xargs ls l 這樣才是正確的 xar...

linux xargs命令學習

xargs命令用來將前乙個程式的標準輸出作為後乙個程式的引數,通常xargs會結合管道以及其它命令一起使用,功能非常強大。以下給出幾種實際的使用案例 1.向指定的程序傳送signal,sh kill 0 2222 sh kill 2222 no such process sh echo 1sh sh...

Linux xargs命令詳解

1 多行內容的單輸出且每行3個 cat home omc ftl logs.txt xargs n3 2 查詢系統中的每乙個普通檔案,然後使用xargs命令來測試它們分別屬於哪類檔案 find home omc maxdepth 1 user root type f xargs file 3 在 v...