<ポイント>
・ファイル名について条件を指定してファイルを抽出するためには、findコマンドを使う。
・findで抽出したファイル名のリストを使ってcpコマンドを動作させるには、xargsコマンドを使う。
□例□
カレントディレクトリ以下の階層に存在し拡張子がtxtのファイルを抽出し、/etc/asteriskディレクトリにコピーする。
$ find ./ -type f -print0 -name "*.txt" | xargs -0 cp -v -b -t /etc/asterisk
(findの部位)
・ ./
カレントディレクトリ以下のファイルを対象にしている。
・ -print0 (←ゼロ)
パイプに渡す値の区切り文字にnull文字を使う。(ファイル名にスペースが含まれている場合に備えている) xargsコマンドの -0 (ゼロ)オプションと対にして用いること。
・ -name "*.txt"
拡張子がtxtである全てのファイルを抽出する。
(xargsの部位)
・ -0 (←ゼロ)
パイプから受け取る値の区切り文字をnull文字とする。 (ファイル名にスペースが含まれている場合に備えている) findコマンドの -print0 (ゼロ)オプションと対にして用いること。
(cpコマンドの部位)
・ -v
進捗状況を表示させる。
・ -b
同名のファイルが書き込み先ディレクトリに存在すれば、バックアップする。
・ -t /etc/asterisk
書き込み先 ディレクトリを指定する。
(参考)
・ 「find,xargs,cpのあれこれ」 < http://www.mkamo.org/blog/20090530/309.html > 2011/7/25
・ 「ファイル・ディレクトリをコピー」 < http://www.k-tanaka.net/unix/cp.html > 2011/7/25