web-dev-qa-db-ja.com

BASHは1つを除くすべてのファイルをコピーします

Default.pngという名前のファイルを除いて、ディレクトリからすべてのファイルをコピーしたいと思います。これを行うには多くの方法があるようです。あなたにとって最も効果的なものは何ですか?

87
Joe Cannatti

単純な場合、src/にはファイルのみが含まれます。

find src/ ! -name Default.png -exec cp -t dest/ {} +

src/にはサブディレクトリがあり、これはそれらを省略しますが、その中のファイルをコピーします:

find src/ -type f ! -name Default.png -exec cp -t dest/ {} +

src/にはサブディレクトリがあり、これは再帰しません。

find src/ -type f -maxdepth 1 ! -name Default.png -exec cp -t dest/ {} +
46
John Kugelman

次のようになります。

cp -r !(Default.png) /dest

現在のフォルダーにネストされているフォルダーにコピーする場合(以下の例では例と呼ばれます)、そのディレクトリも省略する必要があります。

cp -r !(Default.png|example) /example
128
Jon

rsyncは長い間、私のcp/scpの代替品です。

rsync -av from/ to/ --exclude=Default.png

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose               increase verbosity
61
matja

私はただやる:

cp srcdir/* destdir/ ; rm destdir/Default.png

ファイルが大きい場合を除きます。それ以外の場合は、例えば.

find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/
3
nos
cp `ls | grep -v Default.png` destdir
0
Will Hartung