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

时间:2015-02-17 05:38:47

标签: copy wildcard directory

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

显然,只需输入

即可
    cp fileA *Co* 

无效。

我的另一个问题是,如果一个目录已经包含fileA,我不希望它被覆盖。也就是说,如果目录* Co *包含fileA,请不要复制。是否有一个单行解决方案,因为我认为用if-else编写脚本是一种过度杀伤。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您的cp版本支持-n,则可以执行以下操作:

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

如果不是:

find . -name '*Co*' -exec sh -c 'test -f $0/fileA || cp fileA $0' {} \; 

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

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