• ベストアンサー

cpについて教えてください。

LINUXを最近使いはじめた、ど素人です。 ひとつのファイルを複数のディレクトリにコピーする方法がわかりません。 例として  file1 dire1 dire2 というものがあるとします。  (ファイル:file1    ディレクトリ:dire1,dire2) ワイルドカードを使って  cp file1 dire* のようにやったのですがエラーが返ってきました。 これはディレクトリに対してワイルドカードは使えないからなのでしょうか? ひとつのファイルを複数にコピーする方法をおしえてください。 (できれば、ワイルドカードのようにひとつひとつ入力しない方法が いいです) 長年使ってる方で、そんな方法ないでしょって方はそれだけでも 教えてもらえるとあきらめがついて助かります。 よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shred
  • ベストアンサー率35% (25/70)
回答No.1

>これはディレクトリに対してワイルドカードは使えないからなのでしょうか? いいえ。ディレクトリも対象です。 故に今回、ディレクトリにディレクトリをコピーするという書式に 陥ってしまいエラーが発生したのです。 dire2にはfile1がコピーされていますね? cpコマンドは複数ファイルを単一ディレクトリにコピーできますが 逆はできません。 シェルスクリプトで実現するのが妥当でしょう。

nebuta123
質問者

お礼

早速のお返事ありがとうございます。わかりやすい 説明でとてもよくわかりました。 >故に今回、ディレクトリにディレクトリをコピーするという書式に 陥ってしまいエラーが発生したのです。 なるほど そうなっていたのですね。 file1とdire1 をdire2にコピーするということですね。 >dire2にはfile1がコピーされていますね? これはなってなかったのですが、たぶん-Rオプションがなかった ためでエラーメッセージが出てたのはこれのせいです。 (エラーメッセ cp: omitting directory `dir1') シェルスクリプトですか。。  なんかむずかしそうですね^^;。 もし、ちょこっとやるだけなら、おしえてもらえると助かります。 甘えてばかりですみません。 どうもありがとうございましたm(_ _)m

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

file1をdire1とdire2にコピーするとして、 for x in dire1 dire2;do cp file1 $x;done 説明としては、 for x in dire1 dire2 => done までの間を変数xにdire1とdire2を代入して実行する(cpを2回実行する) do と done => 繰り返す範囲を指定 cp file1 $x => file1 を 変数xの中身で示すコピー先にコピー for の他のサンプル for i in 1 2 3 4 5;do echo $i;done

nebuta123
質問者

お礼

ご回答どうもありがとうございました。 非常に丁寧な解説でとてもたすかりました。 ありがとうございました。

関連するQ&A