Linux之xargs命令

  • 2019 年 11 月 6 日
  • 筆記

01

xargs命令

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

xargs命令的用法

xargs用作替換工具,讀取輸入數據重新格式化後輸出。

例子:定義一個測試文件,包含多行文本數據:

touch test.txt

然後輸入:

cat test.txt | xargs

-n 可以選擇多行輸出

cat test.txt | xargs -n3

每一行輸出三個

-d選項可以自定義分隔字元

echo "abcdX abcdX abcdX abcd" | xargs -dX -n2

以X作為分隔符,每行輸出兩個。

-e flag ,注意有的時候可能會是-E,flag必須是一個以空格分隔的標誌,當xargs分析到含有flag這個標誌的時候就停止

xargs -E 『e』 -a test.txt echo

輸出到e就停止

常見用途:

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

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

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

cat url-list.txt | xargs wget -c

3.查找含有目標字元串的文件

find . -name 「*.*」|xargs grep 「string」

4.在當前目錄下查找所有用戶具有讀、寫和執行許可權的文件,並收回相應的寫許可權:

find . -perm -7 -print | xargs chmod o-w

5.查找系統中的每一個普通文件,然後使用xargs命令來測試它們分別屬於哪類文件

find . -type f -print | xargs file

6.嘗試用rm 刪除太多的文件,你可能得到一個錯誤資訊:/bin/rm Argument list too long. 用xargs 去避免這個問題

find ~ -name 『*.log』 -print0 | xargs -i -0 rm -f {}

7、拷貝所有的圖片文件到一個外部的硬碟驅動

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

02

今天完成的事情

今天完成了SQL審核的第三個部分中的幾個功能: 1.庫名,表名不能大寫(此過程中寫了一個弱智的C++程式,下面貼出來,後續需要努力回憶C++語法,DBA做的久了,都不會開發了。); 2.不允許SQL使用外鍵; 3.索引必須用idx_開頭,唯一索引必須使用uniq_開頭,臨時表必須使用tmp開頭; 除此之外,還完成了密碼管理模組的前端頁面設計和內容輸出,並且整理了相應的文檔,以後盡量提高工作效率,做更多的事情。

明天繼續完善SQL審核的功能,然後盡量那些需要訂製的資訊給訂製出來。加油!!!