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

新手上路,请多包涵

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

原文由 Joe Cannatti 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 802
2 个回答

很简单,如果 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/ {} +

原文由 John Kugelman 发布,翻译遵循 CC BY-SA 3.0 许可协议

应该如下:

 cp -r !(Default.png) /dest

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

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

原文由 Jonathan Holloway 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题