复制文件,使用预定义的文件名列表在不同的目录中创建副本

复制文件,使用预定义的文件名列表在不同的目录中创建副本

rock.mpg 我在文件夹目录中有一个文件/folder1/folder2。我需要在不同的目录中创建该文件的多个(340)重复副本,/folder1/folder2/folder3但具有不同的唯一文件名。

340 个重复副本的唯一名称是随机的且不连续。它们已经在abc.txt我拥有的单独的文本文件中定义。

重复文件名的示例abc.txt如下

MS123.mpg
DW235.mpg
WQ6748.mpg
HDJ74.mpg
...
...

很快

可以用shell脚本实现吗?

答案1

应该相当容易xargs

xargs -a abc.txt -i cp /folder1/folder2/rock.mpg /folder1/folder2/folder3/{}
  • -a abc.txt告诉xargs读取abc.txt(而不是像往常一样从标准输入读取)
  • -i告诉用一行输入xargs替换{}

测试它:

xargs -a abc.txt -i echo cp /folder1/folder2/rock.mpg /folder1/folder2/folder3/{}

答案2

仅使用 BASH:

while read newname ; do
    cp old/dir/rock.mpg /new/dir/"$newname"
done < abc.txt

甚至在一行中:

while read newname ; do ; cp old/dir/rock.mpg /new/dir/"$newname" ; done < abc.txt

该机制是将 abc.txt 的每一行读取为变量 newdir,然后使用此新名称将旧文件复制到新位置。

相关内容