我想从一个目录中复制所有文件,除了一个名为 Default.png 的文件。似乎有很多方法可以做到这一点。什么对你来说最有效?
问问题
108509 次
8 回答
176
应该如下:
cp -r !(Default.png) /dest
如果复制到嵌套在当前文件夹中的文件夹(在下面的例子中称为示例),您还需要省略该目录:
cp -r !(Default.png|example) /example
于 2009-08-21T18:40:16.857 回答
87
rsync 长期以来一直是我的 cp/scp 替代品:
rsync -av from/ to/ --exclude=Default.png
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose increase verbosity
于 2009-08-21T18:59:42.293 回答
62
简单,如果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/ {} +
于 2009-08-21T18:59:15.337 回答
2
我只是这样做:
cp srcdir/* destdir/ ; rm destdir/Default.png
除非文件很大。否则使用例如
find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/
于 2009-08-21T18:41:13.267 回答
2
cp `ls | grep -v Default.png` destdir
于 2009-08-21T19:01:52.210 回答
0
2022 年 1 月更新:
这是最简单的方法(并不复杂)。
首先,制作“temp”文件夹:
mkdir temp
其次,将原始文件夹中的所有文件复制到“temp”文件夹:
“-R”标志可以复制包括“符号链接”在内的所有文件
cp -R originalFolder/. temp/
第三,从“temp”文件夹中删除“Default.png”:
rm temp/Default.png
最后,将所有文件从“temp”文件夹复制到您的目标文件夹:
cp -R temp/. destinationFolder/
此外,这是没有“temp”文件夹的最短方法:
cp -R originalFolder/!(Default.png) destinationFolder/
于 2022-01-12T18:55:48.400 回答
-1
# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude
于 2013-05-22T07:25:25.693 回答
-3
将 shell 的扩展参数与正则表达式一起使用
cp /<path>/[^not_to_copy_file]* .
除了 not_to_copy_file 之外的所有内容都将被复制
——如果这有什么问题。请明确说明 !
于 2020-04-02T00:31:13.953 回答