投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償)
logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)
The Document Foundation Wiki

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2011年7月25日月曜日

【Linux CentOS5】ディレクトリ階層に分けて置かれた複数のファイルを条件指定で抽出し、別のディレクトリにまとめてコピーする【xargsと、cpコマンドの組み合わせ】

たとえば、ディレクトリ階層に分けて保存している「何かの設定ファイル」を抽出し、全て一つのディレクトリにコピーしたい場合には次のようにする。

<ポイント>
・ファイル名について条件を指定してファイルを抽出するためには、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

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad