チップス

xargs コマンドの使い方を覚える


zipファイルを解凍するシェルスクリプト について書いたら
twitter で【怒濤の】USP友の会【シェル芸】 ‏@usptomoさんから xargsを使ったほうが、いいんじゃないか? っていう指摘をいただいたので xargsコマンドについてgoogleで検索してみました。
 
おしえていただいた使い方
 

echo *.zip | xargs -n 1 unzip

 
xargs wikipedia より

xargs(エックスアーグズ)はほとんどの UNIX 系オペレーティングシステムに用意されているコマンドである。コマンドに多くの引数を渡すときに便利なコマンドである。非常に長い引数のリストはコマンドに渡すことが出来ない[1]が、xargsを使うことによって引数リストをシステムが受け入れられるサイズに分割してコマンドに渡してくれる。

  
「"xargs -n"」をキーワードにgoogle で検索して、納得の説明がされているページを見つける事ができました。
 
little things of mine "xargs -n 1"

何かと便利な”xargs”コマンド.

findとか大量なファイルを一度にmv,rmするとかそういう時に使う事が多いと思いますが,このコマンドに”-n”というオプションがある事に今日気づきました.

これは,xargsに続くコマンドに最大いくつの引数を渡すかを指定するオプションで,”-n 1″とすると,渡された引数リストを一つずつ個別に実行するという意味になります.

つまり,

> ls
file1 file2 file3 file4

である時,”ls | xargs echo”だと,

echo file1 file2 file3 file4

が実行されますが,”ls | xargs -n 1 echo”だと,

echo file1
echo file2
echo file3
echo file4

が実行される事になります.これはスバラシイ!

何かと大量なファイルを処理する事が多いこの仕事,便利に使えるシチュエーションはとてもたくさんあります.

今までforeachとか使ってたのが馬鹿みたいだ…

 
納得でございまする。


   チップス