• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルスクリプトで、コピーする際に、特定の名前のディレクトリを除外)

シェルスクリプトで特定の名前のディレクトリを除外してコピーする方法

このQ&Aのポイント
  • シェルスクリプトで、特定の名前のディレクトリを除外して別の場所へコピーする方法について質問です。
  • 特定の名前のディレクトリをコピーしない方法について考えていますが、意図どおりに動作しません。
  • ディレクトリ名が「Taro」であるディレクトリを除外してコピーする方法について教えてください。

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

  • ベストアンサー
回答No.3

こんなのどうでしょう。 mkdir dirB ; cd dirA ; find . -type d -name Taro -prune -o -type f -exec cp --parents {} ../dirB \;

noname#15902
質問者

お礼

ありがとうございます。ご回答ので大丈夫そうです。 (dirBが存在する場合、mkdir dirB は使いませんが。)

その他の回答 (2)

  • anights
  • ベストアンサー率72% (35/48)
回答No.2

使い古された手ですが、 cd dirA; tar czf - . --exclude Taro | tar xzf - -C dirB もし、dirBが存在しないのなら cd dirA; tar czf - . --exclude Taro | (mkdir -p dirB; tar xzf - -C dirB) とか。 あとは、お好みでtarのオプションをいじれば大抵はコントロール出来ると思います。

noname#15902
質問者

補足

質問に関して言うと、どうも、次のような感じにやると意図どおり動くみたいです。 cd dirA; find . ! -path "*/Taro/*" -a -type f -exec cp --parents  dirAのパス/{}  dirBのパス  \; (ただし、dirAにてファイルを持たないディレクトリは、dirBには作られない。)

回答No.1

rsync を使うのはどうですか? --exclude オプションで除外したいディレクトリ名を指定すれば良さそうです。

noname#15902
質問者

お礼

ありがとうございます。