[英]BASH copy all files except one
我想从一个目录中复制所有文件,除了一个名为 Default.png 的文件。 似乎有很多方法可以做到这一点。 什么对你来说最有效?
应该如下:
cp -r !(Default.png) /dest
如果复制到嵌套在当前文件夹中的文件夹(在下面的情况下称为示例),您还需要省略该目录:
cp -r !(Default.png|example) /example
rsync 长期以来一直是我的 cp/scp 替代品:
rsync -av from/ to/ --exclude=Default.png
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose increase verbosity
很简单,如果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/ {} +
我只会做:
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
这是最简单的方法(并不复杂)。
首先,制作“temp”文件夹:
mkdir temp
其次,将原始文件夹中的所有文件复制到“temp”文件夹:
“-R”标志可以复制包括“符号链接”在内的所有文件
cp -R originalFolder/. temp/
第三,从“temp”文件夹中删除“Default.png” :
rm temp/Default.png
最后,将所有文件从“temp”文件夹复制到您的目标文件夹:
cp -R temp/. destinationFolder/
下面的脚本对我有用
cp -r `ls -A | grep -v 'skip folder/file name'` destination
# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude
这非常适合复制除节点模块以外的所有内容:)享受和那就是上面的答案。 Rsync => CP,因为你可以看到进展......
rsync -av from / to / --exclude = node_modules
将 shell 的扩展参数与正则表达式一起使用
cp /<path>/[^not_to_copy_file]* .
除了 not_to_copy_file 之外的所有内容都将被复制
——如果这有什么问题的话。 请明确说明 !
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.