xargs命令和tee命令

xargs命令是給其他命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。它擅長將標準輸入數據轉換成命令行參數,xargs能夠處理管道或者stdin並將其轉換成特定命令的命令參數。xargs也可以將單行或多行文本輸入轉換爲其他格式,例如多行變單行,單行變多行。xargs的默認命令是echo,空格是默認定界符。這意味着通過管道傳遞給xargs的輸入將會包含換行和空白,不過通過xargs的處理,換行和空白將被空格取代。xargs是構建單行命令的重要組件之一。

實例

cat test.txt | xargs #多行輸入單行輸出:
echo "/etc/inittab" |cat #打印/etc/inittab
echo "/etc/inittab" |xargs cat #打印/etc/inittab裏的內容

-n -d選項

echo "nameXnameXnameXname" | xargs -dX -n2
 name name
 name name
#n一行的個數d定義一個自定義的定界符

xargs的一個選項-I,使用-I指定一個替換字符串{},這個字符串在xargs擴展時會被替換掉,當-I與xargs結合使用,每一個參數命令都會被執行一次:

ls *.jpg | xargs -n1 -I cp {} /data/images

用rm 刪除太多的文件時候,可能得到一個錯誤信息:/bin/rm Argument list too long. 用xargs去避免這個問題:

find . -type f -name "*.log" -print0 | xargs -0 rm -f 

find的參數-print 在每一個輸出後會添加一個回車換行符,而-print0則不會。
xargs -0將\0作爲定界符。

統計一個源代碼目錄中所有php文件的行數:

find . -type f -name "*.php" -print0 | xargs -0 wc -l 

查找所有的jpg 文件,並且壓縮它們:

find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

xargs其他應用 假如你有一個文件包含了很多你希望下載的URL,你能夠使用xargs下載所有鏈接:

 cat url-list.txt | xargs wget -c

tee 命令

功能說明:讀取標準輸入的數據,並將其內容輸出成文件。

參數:

 -a或--append  附加到既有文件的後面,而非覆蓋它.
 -i-i或--ignore-interrupts  忽略中斷信號。
 --help  在線幫助。
 --version  顯示版本信息。

來自: http://man.linuxde.net/xargs
來自:http://liubin.blog.51cto.com/282313/131298

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章