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

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

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

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


当前回答

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

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

其他回答

不——你不能。

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

http://github.com/ddavison/branch

很简单—— 分支myfile dir1 dir2 dir3

不,cp可以复制多个源,但只会复制到单个目标。您需要安排多次调用cp—每个目的地一次—用于您想要做的事情;就像你说的,使用循环或其他工具。

例如,如果你在目标文件夹的父目录中,你可以这样做:

I用$(ls)表示;执行cp source文件$i;完成

如果需要指定要将文件复制到哪个文件夹,可以将find与一个或多个grep组合在一起。例如,要替换任何出现在任何子文件夹中的favicon.ico,你可以使用:

find . | grep favicon\.ico | xargs -n 1 cp -f /root/favicon.ico

你不能单独使用cp,但你可以将cp和xargs结合起来:

echo dir1 dir2 dir3 | xargs -n 1 cp file1

将file1复制到dir1、dir2和dir3。Xargs将调用cp 3次来完成此操作,详情请参阅Xargs的手册页。