Linux xargs命令-(轉載)

xargs是給命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。它把一個數據流分割爲一些足夠小的塊,以方便過濾器和命令進行處理。一般狀況下,xargs從管道或者stdin中讀取數據,可是它也可以從文件的輸出中讀取數據。xargs的默認命令是echo,這意味着經過管道傳遞給xargs的輸入將會包含換行和空白,不過經過xargs的處理,換行和空白將被空格取代。工具

xargs 是一個強有力的命令,它可以捕獲一個命令的輸出,而後傳遞給另一個命令,下面是一些如何有效使用xargs 的實用例子。flex

1. 當你嘗試用rm 刪除太多的文件,你可能獲得一個錯誤信息:/bin/rm Argument list too long. 用xargs 去避免這個問題this

find ~ -name ‘*.log’ -print0 | xargs -0 rm -furl

 

2. 得到/etc/ 下全部*.conf 結尾的文件列表,有幾種不一樣的方法能獲得相同的結果,下面的例子僅僅是示範怎麼實用xargs ,在這個例子中實用 xargs將find 命令的輸出傳遞給ls -lspa

# find /etc -name "*.conf" | xargs ls –l圖片


3. 假如你有一個文件包含了不少你但願下載的URL, 你可以使用xargs 下載全部連接ci

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

 

4. 查找全部的jpg 文件,而且壓縮它input

# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gzemacs


5. 拷貝全部的圖片文件到一個外部的硬盤驅動 

# ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

 

EXAMPLESfind /tmp -name core -type f -print | xargs /bin/rm -fFind files named core in or below the directory /tmp and delete them.  Note that this will work incorrectly if there are any filenames containing newlines or spaces.find /tmp -name core -type f -print0 | xargs -0 /bin/rm -fFind  files  named core in or below the directory /tmp and delete them, processing filenames in such a way that file or directory names containing spaces or newlines are correctly handled.find /tmp -depth -name core -type f -deleteFind files named core in or below the directory /tmp and delete them, but more efficiently than in the previous example (because we avoid the need to use fork(2) and exec(2) to launch rm and we don't need the extra xargs process).cut -d: -f1 < /etc/passwd | sort | xargs echoGenerates a compact listing of all the users on the system.xargs sh -c 'emacs "$@" < /dev/tty' emacsLaunches the minimum number of copies of Emacs needed, one after the other, to edit the files listed on xargs' standard input.  This example achieves the same effect as BSD's -o option, but in a more flexible and portable way.

相關文章
相關標籤/搜索