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 ...