如何使用命令行将文件夹复制到多个文件夹?

san*_*ale 6 command-line scripts

我想将特定文件夹从一个点复制到另一个点,并且我有更多的 300 个目标文件夹,我想在其中复制该特定文件夹。任何人都可以帮助我提供适当的解决方案吗?shell 脚本建议会很棒。

ste*_*ver 12

我建议使用while ... do循环

while read -r d; do
  cp -R -- foo/ "$d"
done < destinations.txt
Run Code Online (Sandbox Code Playgroud)

或者,使用 xargs

xargs -n1 -a destinations.txt cp -R foo --
Run Code Online (Sandbox Code Playgroud)


Way*_*Yux 10

假设您的第一个文件夹被调用,foo并且您想将其复制到在destinations.txt(每行一个)中指定的目录中。

您可以for为此使用-loop:

for i in $(cat destinations.txt)
do
  echo "$i" #prints the name of the current target -> you can see progress, if it takes long  
  cp -R foo/ "$i"
done 
Run Code Online (Sandbox Code Playgroud)

  • @santoshkale 请考虑使用 [steeldriver's answer](http://askubuntu.com/a/795542/85695) 中给出的解决方案而不是这个。如果您的任何目标名称包含空格或任何其他类型的空格,则此名称将中断。如果它们以 `-` 开头和其他各种边缘情况,它也会中断。一般来说,使用 `for i in $(cat file)` 从来都不是一个好主意,而是使用 `while read i ... &lt; file` 来代替。 (3认同)