- - PR -
シェルスクリプトで複数のディレクトリ配下にコピー
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-11-30 14:07
お世話になります。
シェルスクリプトでファイルを複数のディレクトリ配下にコピーする コマンドを追加していますが、なかなかうまくいきません。 単に「cp /tmp/last.html /var/www/html/*/*/」は違いますよね。 オプション「-p」とか「-pr」を付けてもうまくいきません。 どのような方法で複数のディレクトリ配下にコピー出来るのでしょうか? ご教授よろしくお願い申し上げます。 | ||||
|
投稿日時: 2006-11-30 14:51
「コピー先が複数」であるのなら、複数回のコマンドを実行する必要があります。
| ||||
|
投稿日時: 2006-11-30 14:58
Edossonさん、ご回答ありがとうございます。
コマンドを複数実行とは知っていますが、そのディレクトリは数百以上あるんで。 for関数でも考えていますが、数字ではないので。 以上、よろしくお願い申し上げます。 | ||||
|
投稿日時: 2006-11-30 15:04
数字だろうが文字だろうが、やることは同じですよ。
1.コピーするファイルを明確にする 2.コピー先ディレクトリの条件を明確にする。 3.指定したフォルダから、子フォルダを追跡できるプログラムを記述する。 4.取得したフォルダが、2の条件に合致するかどうか判定する。 5.4で、条件に合致する場合、ファイルをフォルダにコピーする。 番外・一度に考えることは、ひとつだけにする。 全部いっぺんに片づける、なんてことは、雲の上の人に任せておけばいいのです。 我々凡人は、ひとつひとつ問題を明確にして、 ひとつひとつ対処していくことによって、ゴールを目指しましょう。 | ||||
|
投稿日時: 2006-11-30 15:15
こんな感じではダメですか?
($は半角に変換してください)
| ||||
|
投稿日時: 2006-11-30 15:29
条件がイマイチ解りませんが、/var/www/htmlより2階層下のディレクトリへ
コピーすれば良いのでしたら単純に以下のように考えれば良いかと。 1. findで/var/www/html以下のディレクトリを探す 2. 1で求めた結果から正規表現にて"/var/www/html/[^/]*/[^/]*"に一致する物を探す 注:1で求めた結果の最後は/が付かないとする 3. 2で求めた結果に対して/tmp/last.htmlをコピーする find /var/www/html -type d -regex "/var/www/html/[^/]*/[^/]*" -exec cp /tmp/last.html {} \; ※正規表現とfindのオプションはご確認下さい。 思いつきで書いてるので、もっとスマートな書き方があると思いますが。 | ||||
|
投稿日時: 2006-11-30 16:46
SHRさん、温州蜜柑さん、Edossonさん、ご回答ありがとうございます。
最終的にSHRさんのヒントでうまく出来ました。 色々、参考になり、ありがとうございました。 |
1