溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell編程命令xargs該怎么用

發(fā)布時間:2021-11-06 15:18:56 來源:億速云 閱讀:111 作者:柒染 欄目:建站服務器

本篇文章為大家展示了shell編程命令xargs該怎么用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一,說xargs 命令 前,說一下什么是 shell 編程

什么是 shell 編程呢,說白了就是按一定的規(guī)則把各種 命令 組織起來,完成一定的事情。純屬個人理解,哈哈。不管是交互式的shell,還是非交互的shell,它都是由一些命令組成的。

所以命令很重要。xargs就是其中之一,并且還是相當重要的一個命令,為什么說它重要呢,因為他和能其他命令結(jié)合使用,把一個命令的輸出,當作參數(shù)傳給另一個命令。這個根find命令參數(shù)中的exec很像,但是不同:以下4點在網(wǎng)上找的,第一點,是親身體驗過,家里我用的是arch linux ,當你通過exec傳很多數(shù)據(jù)給后面的命令時,會卡在哪兒,其他的沒試過,如果有興趣的朋友可以自己比較一下他們速度,

[zhangy@BlackGhost music]$ time find /home/zhangy/download/ -name ".gz" -print
real    0m0.053s
user    0m0.003s
sys     0m0.003s

1,使用find 的exec選項去處理匹配到的選項時,find 一次性將匹配到得參數(shù)傳給exec執(zhí)行。但有的系統(tǒng),對exec 傳的參數(shù)長度有限制,這樣在find 命令執(zhí)行幾分鐘后會報溢出,錯誤信息通常是“參數(shù)列太長”或“參數(shù)列溢出"。

2,xargs 與find 命令合用的時候,find 把匹配到得命令傳遞給xargs ,xargs 每次只獲取一部分文件,而不是全部。分批處理。

3, 使用exec選項,會為匹配的每個文件處理分配個進程,并不是將匹配到的文件作為一個參數(shù)一次執(zhí)行,這樣就會觸發(fā)多個進程,進而使系統(tǒng)性能下降,影響處理效率。

4,xargs則只有一個進程、但xargs 處理是否分批 ,批次大小,也會受系統(tǒng)些可調(diào)參數(shù)影響。

二,xargs應用實例

1,找出文件,改變文件所屬用戶

#將把當前目錄下面以test開頭的文件用戶改為zhangy
[root@BlackGhost download]# find . -name "test*"  -print | xargs chown zhangy:users
#查看當前目錄中以test開頭的文件所屬用戶
[root@BlackGhost download]# find . -name "test*"  -print -exec ls -al {} \;
./test.sql.zip
-rw-r--r-- 1 zhangy users 1981 Feb  2 16:05 ./test.sql.zip
./test.zip
-rw-r--r-- 1 zhangy users 164 May 23 22:54 ./test.zip

2,把系統(tǒng)的用戶統(tǒng)計一下

[zhangy@BlackGhost download]# cut -d: -f1 < /etc/passwd | xargs echo >> /home/zhangy/userlist.txt

3,備份文件

[zhangy@BlackGhost ddd]$ ls |xargs -i cp {} {}.bak
cp test test.bak

上述內(nèi)容就是shell編程命令xargs該怎么用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI