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

use*_*284 5 nautilus files batch 13.10

我希望复制图像 ( grey.png) 并使用此长列表重命名副本

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

Spa*_*awk 2

我假设您在 的文件中拥有姓名列表/path/to/target_names

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

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

您可以使用符号链接来代替复制(这会将所需的大小乘以新文件的数量),其中每个新文件都引用原始文件,而不复制它。

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

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


c0r*_*0rp 2

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

为副本创建一个新文件夹:

mkdir copies
Run Code Online (Sandbox Code Playgroud)

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

for name in `sed -r 's/,/\n/g;s/ *//g' names.txt`; do echo $name; done
Run Code Online (Sandbox Code Playgroud)

如果这工作正常,请执行下一步。

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

for name in `sed -r 's/,/\n/g;s/ *//g' names.txt`; do cp grey.png copies/$name; done
Run Code Online (Sandbox Code Playgroud)