如何将文件复制到具有相同前缀的多个目录的子文件夹中?

如何将文件复制到具有相同前缀的多个目录的子文件夹中?

我的当前目录中有一个名为“foo.txt”的文件。该目录还有名为我的文件夹1,我的文件夹2等等...每个文件夹都有一个名为“constant”的子文件夹。

我想将“foo.txt”复制到myfolder1/常量,myfolder2/常量, ETC...

我尝试使用以下命令执行此操作:

cp foo.txt myfolder*/constant

这导致了错误:

cp: omitting directory `myfolder1/constant'
cp: omitting directory `myfolder2/constant'
etc...

有没有办法将文件复制到具有相同前缀的多个目录的子文件夹中(在本例中,前缀为“myfolder”)?

答案1

cp获取两个以上参数时,最后一个被视为目标目录,其他参数被视为要复制到那里的文件。

cp不知道您使用了通配符:在命令看到通配符之前,shell 会扩展通配符。因此,即使cp具有某种多目标能力,它也无法使用这种语法。

你需要一个循环。在类似 Bourne 的 shell 中:

(ret=0
for dir in myfolder*/constant/; do
  cp foo.txt "$dir" || ret=$?
done
exit "$ret")

业务最终$ret是报告退出状态的任何失败。cp

相关内容