如何使用名称 *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 ...
如何将一个文件复制到*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 ...