BASH复制除一个以外的所有文件

我想复制一个名为Default.png的文件除外的所有文件。 似乎有很多方法可以做到这一点。 什么似乎对你最有效?

很简单,如果src/只包含文件:

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

如果src/具有子目录,则会省略它们,但将文件复制到其中:

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

如果src/有子目录,这不会recursion到它们中:

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

应该如下:

 cp -r !(Default.png) /dest 

如果复制到嵌套在当前文件夹中的文件夹(在下面的情况下称为示例),则还需要省略该目录:

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

rsync已经被我的cp / scpreplace很久了:

 rsync -av from/ to/ --exclude=Default.png -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X) -v, --verbose increase verbosity 

我只是做:

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

除非文件很大。 否则使用例如

 find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/ 
 cp `ls | grep -v Default.png` destdir 
 # chattr +i /files_to_exclude # cp source destination # chattr -i /files_to_exclude