xargs工具將乙個命令的輸出作為另乙個命令的引數

2021-06-20 07:20:22 字數 1814 閱讀 6475

xargs是乙個非常強大的命令,可以將乙個命令的輸出,作為另乙個命令的引數。

這個非常有用,舉例如下:

例項1:

# cat  url-list.txt  |  xargs  wget  –c

例項2:

找出所有的.jpg格式的,並將其歸檔,即打包。

詳解find命令,find和grep不同,find是在linux檔案系統中查詢指定名字的檔案,而grep是在指定檔案中查詢指定的字串,所以,是不同的。

find     pathname(在該路徑下查詢)    -name   filename(查詢名字為filename的檔案)   -type   typename(檔案型別)            //等等還有很多其他引數,參看find的使用,在我部落格中還會繼續寫。

例項3:

將建立者為chenbaihu的所有程序殺掉。

可以使用ps -elf可以檢視程序資訊,

可以使用grep   chenbaihu配合ps -elf查詢chenbaihu建立的程序資訊

可以使用awk將程序id擷取出來,

可以使用xargs將擷取出來的程序id,作為kill  -9  的引數。

所以使用:

ps  -elf   |   grep   chenbaihu  |  awk ''  |xargs  kill  -9  

其中,awk  ''是將程序的id擷取出來,因為ps  -elf中第第四列是程序的id。

今天在linux下給資料庫做自動備份,要求每個星期一備份一次,然後備份檔案只保留當前乙個月的檔案。資料備份的shell指令碼和守護程序就不說了,我這裡只說說查詢當前資料夾檔案,保留乙個月備份上。用到的命令find -exec rm:

一般有2中寫法:

#find ... -exec rm {} \; (注意{}與\ 之間有個空格,否則會提示錯誤

#find ... | xargs rm -rf

兩者都可以把find命令查詢到的結果刪除,其區別簡單的說是前者是把find發現的結果一次性傳給exec選項,後者xargs命令會分批次的處理結果。

xargs優點:由於是批處理的,所以執行效率比較高(通過緩衝方式)

xargs缺點:有可能由於引數數量過多(成千上萬),導致後面的命令執行失敗

若換成 find ....-execrm {} \; 的話,

因為rm 是"逐個" item 去處理的, 則無此憂慮

rm不接受標準輸入,所以不能用find / -name "tmpfile" |rm

-exec 必須由乙個 ; 結束,而因為通常 shell 都會對 ; 進行處理,所以用 \; 防止這種情況。

{} 可能需要寫做 '{}',也是為了避免被 shell 過濾。

例子:cd /home/useway/databackup

find ./ -type f -mtime +30 -exec rm -fr {} \; > /dev/null 2>&1

./表示從當前目錄找

-type f,表示只找file,檔案型別的,目錄和其他位元組啥的不要

-mtime +30 表示30天前的檔案。

-exec 把find到的檔名作為引數傳遞給後面的命令列,代替{}的部分

-exec後便跟的命令列,必須用「 \;」結束

/dev/null 2>&1 這樣的寫法.這條命令的意思是將標準輸出和錯誤輸出全部重定向到/dev/null中,也就是將產生的所有資訊丟棄.

N天學習乙個linux命令之xargs

用途 標準輸入流讀取引數 空格或者換行符分隔 傳遞給需要執行的命令 用法 xargs options command initial arguments 常用選項 arg file file a file 從檔案中讀取引數 null 0空字元作為分隔符,當引數中包含空格或者換行符時使用 delimi...

輸入乙個整數,將每位數字輸出

在這裡插入 片 include 程式作用 輸入乙個整數,將每一位數字輸出 程式設計思路 將每一位輸出來,我們可以先獲取這個數的最高權位是多少 t number 將從鍵盤上獲取的數 拷貝乙份給t while t 10 中 主要的作用是獲取最高位數 power 10 每執行一次就 10 t 10 對乙個...

將乙個程式的輸出接到兩個程式的輸入

unix的管道是個好東西,可以串起幾個命令來實現強大的功能。不過有時候如果想要把乙個程式的輸出接到兩個程式的輸入,單靠 是不成了。要麼先把程式的輸出重定向到乙個檔案,不過這在輸出量很大的時候不算是乙個好辦法。下面是實現這種功能的乙個方法 mkfifo tmp fifo prog2 tmp fifo ...