是否可以使用cp命令将一个文件复制到多个目录?

我尝试了以下方法,但没有奏效:

cp file1 /foo/ /bar/
cp file1 {/foo/,/bar}

我知道可以使用for循环,或者find。但是可以使用gnu cp命令吗?


当前回答

如果你想在没有fork命令的情况下执行:

Tee <inputfile file2 file3 fil4…> / dev / null

其他回答

ls -db di*/subdir | xargs -n 1 cp文件

如果目录名中有空格,则使用-b,否则将被xargs破坏为不同的项,在echo版本中有此问题

通配符也适用于Roberts代码

echo ./fs*/* | xargs -n 1 cp test 
ls -d */ | xargs -iA cp file.txt A

不是使用cp本身,而是…

当我从一张(慢的)SD卡复制大量Gopro镜头到三个(慢的)USB驱动器时,我想到了这个问题。我想只读取一次数据,因为这要花很长时间。我想让它递归。

$ tar cf - src | tee >( cd dest1 ; tar xf - ) >( cd dest2 ; tar xf - ) | ( cd dest3 ; tar xf - )

(如果你想要更多的输出,你可以添加更多的>()部分。)

我还没有对它进行基准测试,但它肯定比cp-in-a-loop(或一堆并行cp调用)快得多。

在我看来,你可以使用以下方法:

ls | xargs -n 1 cp -i file.dat

cp命令的-i选项意味着将询问您是否用file.dat覆盖当前目录下的文件。虽然这不是一个完全自动的解决方案,但它为我工作。