- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルスクリプトで、コピーする際に、特定の名前のディレクトリを除外)
シェルスクリプトで特定の名前のディレクトリを除外してコピーする方法
このQ&Aのポイント
- シェルスクリプトで、特定の名前のディレクトリを除外して別の場所へコピーする方法について質問です。
- 特定の名前のディレクトリをコピーしない方法について考えていますが、意図どおりに動作しません。
- ディレクトリ名が「Taro」であるディレクトリを除外してコピーする方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんなのどうでしょう。 mkdir dirB ; cd dirA ; find . -type d -name Taro -prune -o -type f -exec cp --parents {} ../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のオプションをいじれば大抵はコントロール出来ると思います。
質問者
補足
質問に関して言うと、どうも、次のような感じにやると意図どおり動くみたいです。 cd dirA; find . ! -path "*/Taro/*" -a -type f -exec cp --parents dirAのパス/{} dirBのパス \; (ただし、dirAにてファイルを持たないディレクトリは、dirBには作られない。)
- hetarepyon
- ベストアンサー率52% (94/180)
回答No.1
rsync を使うのはどうですか? --exclude オプションで除外したいディレクトリ名を指定すれば良さそうです。
質問者
お礼
ありがとうございます。
お礼
ありがとうございます。ご回答ので大丈夫そうです。 (dirBが存在する場合、mkdir dirB は使いませんが。)