如何使用名称 *Co*(其中 *=通配符)将文件复制到多个目录

How to copy a file on several directories with the name *Co* (where *=wildcard)

如何将一个文件复制到*Co*形式的多个目录?或*52?

显然,只需输入

    cp fileA *Co* 

不行。

我的另一个担心是,如果一个目录已经包含文件 A,我不希望它被覆盖。也就是说,如果目录 *Co* 包含文件 A,则不要复制。是否有针对此问题的单行解决方案,因为我认为使用 if-else 编写脚本是一种矫枉过正的做法。

谢谢!

如果您的 cp 版本支持 -n,您可以:

find . -name '*Co*' -exec cp -n fileA {} \;

如果没有:

find . -name '*Co*' -exec sh -c 'test -f [=11=]/fileA || cp fileA [=11=]' {} \; 

请注意,这些都将递归下降:如果您不想这样,您可以限制查找的范围。要查找 Co 或 *52,您可以执行以下操作:

find . \( -name '*Co*' -o -name '*52' \) -exec ...