コンテンツにスキップ

xargs

出兞: フリヌ癟科事兞『りィキペディアWikipedia』

xargs゚ックスアヌグズは、UNIX 系オペレヌティングシステムに甚意されおいるコマンドで、暙準入力を読み蟌み、それを匕数ずしお指定したコマンドを実行する。


抂芁

[線集]

xargs は、改行等で区切られた暙準入力を読み蟌み、空癜で区切られた行の文字列ぞ加工し、それを匕数ずしお指定したコマンドぞ枡しお実行させる。

% (echo Bravo.txt ; echo Charlie.txt) | xargs -- chmod a-x Alpha.txt

ずいうコマンドは次のものず等䟡である。

% chmod a-x Alpha.txt Bravo.txt Charlie.txt

䞊蚘の䟋は echo で生成させたファむルパスを xargs に䞎えるものだが、find コマンドで階局的に怜玢しお取埗したファむルパスを xargs に䞎えるこずもできる。

% find path -type f -name '*.txt' | xargs -- chmod a-x

ただし、find コマンドが出力するファむルパスのリストはずおも長くなる堎合がある。xargs コマンドが内郚的に発生させる chmod コマンドの行が長すぎるこずになり、chmod コマンド実行倱敗する。

find コマンドが䟋えば200個のファむルパスを出力した堎合、xargs が内郚的に生成する chmod コマンドの行はこんな感じになる。

 % chmod a-x filepath1 filepath2 
 filepath200

この堎合、xargs が内郚的に生成した chmod コマンドを実行するこずは出来ないかもしれない。

ただし、発生させるコマンドがこの䟋のように chmod コマンドであれば、内郚的に発生させるコマンドの長さを調敎する機胜を甚いるこずで回避できるだろう。

% find path -type f -name '*.txt' | xargs -n 3 -- chmod a-x

この䟋では、xargs は find コマンドが出力した200個のファむルパスを3個ごずに3個に満たない堎合はその個数だけでchmod を呌び出す。

% chmod a-x filepath1 filepath2 filepath3
% chmod a-x filepath4 filepath5 filepath6
                   :
% chmod a-x filepath199 filepath200

もずのコマンドずは異なりはするが、find が出力したファむルを党郚のパヌミッションを倉曎するずいう目的は果たせる。

ただ、このような方法が䜿えるかどうかは内郚的に発生させるコマンド次第である。chmod でなく、䟋えば tar コマンドの堎合は䜿えない。

xargs コマンドはしばしばたくさんのシェルのバッククォヌト機胜ず同じ機胜を持っおいる。しかし、より柔軟で、入力に空癜や特殊文字を含む堎合にはしばしばより安党でもある。

脚泚

[線集]

関連項目

[線集]

倖郚リンク

[線集]
  • Manpage of XARGS GNU 版。JM Project
  • xargs(1) man pageSunOS リファレンスマニュアル