😄
特定のファイルを複数のディレクトリにコピーする
複数のファイルを特定のディレクトリにコピーすることは以下のようにして簡単にできる。
cp file-1 file-2 ... file-n dir
これに対して,特定のファイルを複数のディレクトリにコピーするためには,cp
だけではなく,xargs
を利用する必要がある。
xargs
は直前のコマンドの実行結果を標準入力として受け取るためのコマンドである。例えば,
echo good-morning hello good-evening | xargs echo
を実行すると,echo good-morning hello good-evening
の実行結果であるgood-morning hello good-evening
がそのまま出力される。
xargs
を利用すれば,以下のようにして特定のファイルを複数のディレクトリにコピーできる。
echo dir-1 dir-2 dir-3 | xargs -n 1 -I {dir} cp file {dir}
ここで,-I {dir}
というオプションは,入力された前のコマンドの実行結果をどこに代入するかを指定している。また,-n 1
というオプションは何個ずつ引数を代入するかを指定している。したがって,このコマンドは,dir-1
,dir-2
,dir-3
を一つずつ{dir}
に代入して,
cp file dir-1
cp file dir-2
cp file dir-3
を実行していることになる。これにより当初の目標が達成される。
Discussion