我想从dir中复制所有文件,除了一个名为Default.png的文件。似乎有很多方法可以做到这一点。什么似乎对你最有效?
答案 0 :(得分:124)
应如下:
cp -r !(Default.png) /dest
如果复制到嵌套在当前文件夹中的文件夹(在下面的例子中称为示例),您还需要省略该目录:
cp -r !(Default.png|example) /example
答案 1 :(得分:60)
rsync很长一段时间以来一直是我的cp / scp替代品:
rsync -av from/ to/ --exclude=Default.png
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose increase verbosity
答案 2 :(得分:44)
简单,如果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/ {} +
答案 3 :(得分:3)
我只是这样做:
cp srcdir/* destdir/ ; rm destdir/Default.png
除非文件很大。否则使用例如
find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/
答案 4 :(得分:0)
cp `ls | grep -v Default.png` destdir
答案 5 :(得分:-1)
# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude
答案 6 :(得分:-1)
这非常适合复制除节点模块以外的所有内容:)享受和多数民众赞成在上述答案。 Rsync => CP,您可以看到进度...
rsync -av从/到/ --exclude = node_modules
答案 7 :(得分:-2)
在正则表达式中使用shell的扩展参数
cp /<path>/[^not_to_copy_file]* .
除了not_to_copy_file
之外的所有内容都会被复制。- 如果这有什么问题。请明确说明 !