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

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

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

我知道可以使用for循环,或者find。但是可以使用gnu 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/ .使用实例

我知道这就像发出几个命令,但当我想输入一行然后离开一会儿时,它对我来说很有效。

其他回答

如果你想复制多个文件夹到多个文件夹,你可以这样做:

echo dir1 dir2 dir3 | xargs -n 1 cp -r path / toyourdir - {subdir1 subdir2, subdir3}

另一种方法是使用cat和tee,如下所示:

cat <source file> | tee <destination file 1> | tee <destination file 2> [...] > <last destination file>

我认为这将是相当低效的,尽管,因为工作将被分割在几个进程(一个目的地)和硬盘驱动器将写入几个文件一次在不同的部分盘片。然而,如果你想把一个文件写到几个不同的驱动器上,这个方法可能会非常有效(因为所有的拷贝都可以并发进行)。

假设要将fileName.txt复制到当前工作目录中的所有子目录。

通过ls获取所有子目录的名称,并将它们保存到某个临时文件中,例如allFolders.txt ls > allFolders.txt 打印列表并将其传递给命令xargs。 cat allFolders.txt | xargs -n 1 cp fileName.txt

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

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

不——你不能。

我发现在很多情况下我可以使用这个功能,所以我制作了自己的工具来为我做这件事。

http://github.com/ddavison/branch

很简单—— 分支myfile dir1 dir2 dir3