😄

特定のファイルを複数のディレクトリにコピーする

2023/09/05に公開

複数のファイルを特定のディレクトリにコピーすることは以下のようにして簡単にできる。

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-1dir-2dir-3を一つずつ{dir}に代入して,

cp file dir-1
cp file dir-2
cp file dir-3

を実行していることになる。これにより当初の目標が達成される。

Discussion