是否可以使用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命令吗?
当前回答
本质上等同于xargs的答案,但如果你想并行执行:
parallel -q cp file1 ::: /foo/ /bar/
例如,将file1复制到当前文件夹的所有子目录中(包括递归):
parallel -q cp file1 ::: `find -mindepth 1 -type d`
注意:这可能只在非常特定的情况下才会带来明显的速度提升,例如,如果每个目标目录是一个不同的磁盘。
它在功能上也类似于xargs的'-P'参数。
其他回答
在Mac OS上使用xargs复制到使用通配符的目录,唯一适合我的解决方案是在目录名中使用空格:
find ./fs*/* -type d -print0 | xargs -0 -n 1 cp test
要复制的文件在哪里测试 和。/fs*/*要复制到的目录
问题是xargs将空格视为一个新参数,不幸的是,使用-d或-E更改分隔符的解决方案在Mac OS上不能正常工作。
ls -d */ | xargs -iA cp file.txt A
你不能单独使用cp,但你可以将cp和xargs结合起来:
echo dir1 dir2 dir3 | xargs -n 1 cp file1
将file1复制到dir1、dir2和dir3。Xargs将调用cp 3次来完成此操作,详情请参阅Xargs的手册页。
例如,如果你在目标文件夹的父目录中,你可以这样做:
I用$(ls)表示;执行cp source文件$i;完成
假设要将fileName.txt复制到当前工作目录中的所有子目录。
通过ls获取所有子目录的名称,并将它们保存到某个临时文件中,例如allFolders.txt ls > allFolders.txt 打印列表并将其传递给命令xargs。 cat allFolders.txt | xargs -n 1 cp fileName.txt