例外を除いて、1つのディレクトリから別のディレクトリにすべてのファイルを再帰的にコピーします


8

いくつかのディレクトリを除くすべてのファイルを1つのディレクトリから別のディレクトリにコピーする方法を教えてください。たとえば:

cp -R test /www/test2 would copy all

しかし、私はログとログと呼ばれる2つのフォルダーを除外したいと思います。

私は次のようなことを試しました:

find ~test -not -name logs,log |  cp -R test /www/test2 

しかし、構文について教えていただけますか?

回答:


10

rsyncを使用します。

rsync -a --exclude=logs --exclude=log from/ to/

rynscはちょっとクールでした!
Micheal 2012年

rsyncが私の新しい友達になりました:)ありがとう、説明はきちんとしています
Aleks 2014年

2

私はあなたが次のようなものを探していると思います:

find dir -type d ! \( -name 'log' -o -name 'logs' \) | xargs -I{} cp -R {} /www/test2/{}

@sputnickは私の変更を確認します。あなたがたまたまそれを知っているなら、これのためにemacs正規表現を提供してください。
Tim Pote

0

を使用している場合:

shopt -s extglob
cp -R test/!(log|logs) /www/test2

http://wiki.bash-hackers.org/syntax/patternを参照してください


構造が次のようになるとtest/someotherdir/logsどうなりますか?OPは決して言わloglogs、2番目に高いディレクトリでした。
Tim Pote

OPコマンドを再度読み取る場合、find ~test -not -name logs,logログとログはサブディレクトリになるはずです。
Gilles Quenot、2012年

findすべてのサブディレクトリを再帰的に調べます。ファイルのグロビングは行いません。仕事へのあなたの答えのために、loglogsでなければならないの即時のサブディレクトリtest
Tim Pote、2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.