沢山のファイルを削除したいとする。
$ rm `ls *.txt`
ところが、ファイルの数が一万を超えるあたりから、rm コマンドがファイル数の多さに音を上げる。そんな時、xargs コマンドを使うと、スムーズに削除できる。
$ ls *.txt > foo.dat $ xargs rm < foo.dat
バッククォートと xargs コマンドの違いは、展開されるタイミング。 バッククォートは shell の機能なので、shell の実効時に展開される。 つまり、一万のファイルがあったら一万の引数が rm コマンドに渡される。 一方、xargs は削除するファイル名を foo.dat から一つずつ展開して rm コマンドに渡す。 さらに、この方法なら一旦出力したファイル名リストを sed や Perl でいじるのも、好みのままなので、使い勝手がいい。
No comments:
Post a Comment