如何使用名称列表复制和重命名同一个文件?

如何使用名称列表复制和重命名同一个文件?

我希望复制图像(grey.png)并使用重命名副本这一长串名单

有什么办法吗?(运行 13.10)

答案1

我假定您在 的文件中有一个姓名列表/path/to/target_names

要进行复制,请打开终端并cd进入包含此文件的目录。然后运行

for i in $( </path/to/target_names tr -d ',' ); do cp grey.png ${i}; done

您不必进行复制,因为复制会使所需的大小乘以新文件的数量,而是可以使用符号链接,其中每个新文件都引用原始文件,而无需复制它。

for i in $( </path/to/target_names tr -d ',' ); do ln -s grey.png ${i}; done

请注意,如果您使用符号链接,则以后将无法更改原始路径和目标路径的相对路径。即它们必须保留在同一目录中。(如果愿意,您可以使用原始命令为另一个目录创建符号链接。)

答案2

假设您有一个names.txt包含所有这些图像名称的文件。

创建新文件夹以用于复制:

mkdir copies

现在做个小测试。这将输出所有文件名

for name in `sed -r 's/,/\n/g;s/ *//g' names.txt`; do echo $name; done

如果一切顺利,请执行下一步。

最后复制到copies文件夹。我假设您在文件夹所在的文件夹中执行此names.txt操作copies

for name in `sed -r 's/,/\n/g;s/ *//g' names.txt`; do cp grey.png copies/$name; done

相关内容