是否可以使用cp命令将一个文件复制到多个目录?
我尝试了以下方法,但没有奏效:
cp file1 /foo/ /bar/
cp file1 {/foo/,/bar}
我知道可以使用for循环,或者find。但是可以使用gnu cp命令吗?
是否可以使用cp命令将一个文件复制到多个目录?
我尝试了以下方法,但没有奏效:
cp file1 /foo/ /bar/
cp file1 {/foo/,/bar}
我知道可以使用for循环,或者find。但是可以使用gnu cp命令吗?
当前回答
你不能单独使用cp,但你可以将cp和xargs结合起来:
echo dir1 dir2 dir3 | xargs -n 1 cp file1
将file1复制到dir1、dir2和dir3。Xargs将调用cp 3次来完成此操作,详情请参阅Xargs的手册页。
其他回答
不是使用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调用)快得多。
我喜欢复制一个文件到多个目录,就像这样: Cp file1 /foo/;Cp file1 /bar/;Cp file1 /foo2/;Cp file1 /bar2/ . 将一个目录复制到其他目录: Cp -r dir1/ /foo/;Cp -r dir1/ /bar/;Cp -r dir1/ /foo2/;Cp -r dir1/ /bar2/ .使用实例
我知道这就像发出几个命令,但当我想输入一行然后离开一会儿时,它对我来说很有效。
不——你不能。
我发现在很多情况下我可以使用这个功能,所以我制作了自己的工具来为我做这件事。
http://github.com/ddavison/branch
很简单—— 分支myfile dir1 dir2 dir3
在Mac OS上使用xargs复制到使用通配符的目录,唯一适合我的解决方案是在目录名中使用空格:
find ./fs*/* -type d -print0 | xargs -0 -n 1 cp test
要复制的文件在哪里测试 和。/fs*/*要复制到的目录
问题是xargs将空格视为一个新参数,不幸的是,使用-d或-E更改分隔符的解决方案在Mac OS上不能正常工作。
在我看来,你可以使用以下方法:
ls | xargs -n 1 cp -i file.dat
cp命令的-i选项意味着将询问您是否用file.dat覆盖当前目录下的文件。虽然这不是一个完全自动的解决方案,但它为我工作。