標準出力からの引数の作成

何らかのコマンドを打って得た結果を引数として別のコマンドを実行したい場合はパイプとコマンド 'xargs' を組み合わせて利用する。使い方は、'最初のコマンド |xargs 次のコマンド' のようになる。この '次のコマンド' の引数として '最初のコマンド' の結果が渡される。

カレントディレクトリ以下のファイル (ディレクトリ以外) を検索し、それらのファイル中に 'hoge' という文字列が含まれるかどうかをみるには以下のように打つ。もし 'xargs' を打たない場合は得られたファイル名に対して 'grep' が実行される。

1|$find ./ -type f |xargs grep "hoge"

以下のように打つと、カレントディレクトリ以下で拡張子に .txt を持つファイルを検索し、それらのファイルの末尾10行を表示する。

1|$find ./ -name "*.txt" |xargs tail -n 10

コマンド find や ls 等で検索したファイルを別のディレクトリに移動させたいときは以下のように打つ。この場合、ディレクトリ bar で .pdb という文字列を有する全てのファイルをディレクトリ database にコピーする。

1|$ls bar/* |grep .pdb |xargs cp -t database

以下のように打つとディレクトリ bar 以下に存在する .pdb という文字列を持つファイルをディレクトリ database に移動させる。

1|$find bar -name ".pdb" |xargs cp -t database

これは以下のように書くこともできる。

1|$find bar -name ".pdb" |xargs -i cp {} database
このエントリーをはてなブックマークに追加

Site search

ページのトップへ戻る