君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

1つのファイルを複数のディレクトリにコピーしたい〜UNIXコマンド:xargsとcpについて〜

f:id:karoten512:20180117121818p:plain

1つのファイルを複数のディレクトリにコピーしたい

dir1, dir2, dir3にfileをコピーしてばらまきたい。

結論

echo dir1 dir2 dir3 | xargs -n 1 cp -v file

読み解いてみる

xargs

とは

標準出力をコマンドライン引数に変えるコマンド。

今回の例で言えば、echoによって出力される標準出力を、

コマンドライン引数としてcpに渡している。

-nオプションとは

数字をすこしいじってみた。

$ echo dir1 dir2 dir3 | xargs -n 1
dir1
dir2
dir3
$ echo dir1 dir2 dir3 | xargs -n 2
dir1 dir2
dir3
$ echo dir1 dir2 dir3 | xargs -n 3
dir1 dir2 dir3

なるほど。

引数をいくつづつ渡すかを指定するコマンドなのね。

cpとは

概要

ファイルをコピーするコマンド。

-vオプションとは

オプション有り。

$ cp -v fileA fileB
flieA -> fileB

オプション無し。

$ cp -v fileA fileB

何も言わねえ。

まとめ

xargs、

コマンドライン引数しかうけとらないコマンドに、

標準出力をわたしたい時に活躍するみたい。

面白いな。

unixコマンドは1つ1つの機能が小さいので、汎用性が高い。

組み合わせて使って楽しい。

いろいろ覚えていこう。

参考

orebibou.com