xargsコマンドlinux次元開発での使用


xargsコマンドは、運用次元開発で使用されます.
クラスタのメンテナンス開発の過程で、実際の開発シーンに基づいて、linuxローカル上のファイルでもhdfs上のファイルでも、xargsコマンドで一つ一つ処理することができます.ここでxargsコマンドは、メンテナンス開発中の小さなツールとして、バッチファイルをすばやくDIY処理し、非常に柔軟です.ref21
xargsコマンド
xargsコマンドは、他のコマンドにパラメータを渡すフィルタであり、複数のコマンドを組み合わせたツールでもあり、単行コマンドを構築する重要なコンポーネントの1つです.xargsのデフォルトコマンドはechoで、スペースはデフォルトのデリミタです.
一般的な機能:
1.出力データは、個々に受信し、他のコマンドDIYで処理する2に渡す.出力されたデータをフォーマットして再出力し、eg:N行が単行になり、単行がN行になり、各行M文字になる.
基本用法【-n,-d,-I,-t】
xargsは置換ツールとして、入力データを読み出して出力を再フォーマットします.
	-n
jacky@xingxing myscripts % cat exa.txt
a b c
d e f
g h i
---     ,        
jacky@xingxingmyscripts % cat exa.txt|xargs
a b c d e f g h i
jacky@xingxing myscripts % cat exa.txt|xargs echo
a b c d e f g h i

---  -n       ,      
jacky@xingxing myscripts % cat exa.txt|xargs -n2
a b
c d
e f
g h
i
	-d 【ps:mac   -d  ,linux   ,   】
echo "aaxbbxccxddx" |xargs -dx
aa bb cc dd

	-I  【  -I          ,     ,
	      xargs        】
ls ./
a.txt
b.txt
c.txt

ls ./|xargs -I {} mv {} {}.bak
a.bxt.bak
b.txt.bak
c.txt.bak

	-t 【      】

xargs結合find使用
                    , rm -rf aa bb 
cc ...,          ,     xargs  
eg:
find . -type -f -name '*.log' -print0 |xargs -0 rm -rf 

find-print 0とxargs-0の原理と使い方
-print 0とxargs-0が使われていますが、これは何ですか?資料ref 2を探して、以下の説明を見つけました.
find . -type -f -name ‘*.log’ |xargs rm -rf
findとxargsを一緒に使用する場合、このコマンドがファイル名にスペースや改行文字がある場合、エラーが発生します.xargs識別文字セグメントの識別はスペースまたは改行であるため、1つのファイル名にスペースまたは改行がある場合、xargsはそれを2つの文字列に識別し、自然にエラーが発生します.
この場合-print 0と-0が必要です.
質疑応答
find-print 0は、デフォルトで改行文字を付けるのではなく、findの各結果の後にNULL文字を追加することを示します.findのデフォルトでは、各結果の後に'''が追加されるので、出力結果は1行1行です.-print 0を使用すると1行になります
xargs−0は、xargsがNULLを区切り記号として使用することを示す.これで前後の組み合わせにスペースや改行文字の間違いはなくなります.NULLを区切り文字として選択したのは、一般的なプログラミング言語がNULLを文字列の終わりのフラグとしているため、ファイル名がNULLで終わることはあり得ないため、万全を期しています.
私たちが推奨している比較保険の命令を比較すると
find . -type -f -name ‘*.log’ -print0 |xargs -0 rm -rf
ディレクトリの下にあるshellスクリプトの数を統計します.
find . -type f -name "*.sh" -print0 | xargs -0 wc -l

すべてのログ・ファイルを検索し、圧縮します.
find . -type f -name "*.log" -print | xargs tar -czvf logs.tar.gz

ブログ参照↩︎
ブログ参照↩︎