通过附加 .csv 文件的前缀在终端中批量重命名

问题描述 投票:0回答:1

编辑(改进问题):

Screenshot

在上图中,您可以看到series文件的命名。

每个文件的文件名是:

01-NameOfProject_Data Set X-01.png
其中
X
是从 1 到 24 的顺序 (请注意!不是 01、02、...、24)

我创建了两个 .csv 文件(以探索哪个更适合您的回答),如图所示。

第一步: 我需要将国家代码前缀添加到每个相应的文件中。 例如。

EN_01-NameOfProject_Data Set 1-01.png

第二步: 我需要删除部分

_Data Set X-01
结果将是
EN_01-NameOfProject.png

我在上面的两个步骤中请求帮助,以便我更好地理解程序。 我需要通过 macOS 终端执行此操作。我已经通过 Homebrew 安装重命名

brew install rename

原题: 我有一个看起来像这样的文件列表:

01-NameOfProject_Data Set 1-01.png
01-NameOfProject_Data Set 2-01.png
01-NameOfProject_Data Set 3-01.png
...
01-NameOfProject_Data Set 24-01.png

我还有一个 Excel 文件(我可以将其另存为 .csv)。 它只有一列,行数与上述文件的数量完全一样。 每个单元格都有一个语言简码。 它看起来像这样:

EN
GR
IT
...
BU

正确(相应)顺序的 Excel 文件作为文件意味着:

01-NameOfProject_Data Set 1-01.png
确实是英文的(
EN
)等等

您将如何批量重命名文件,以便最终得到如下内容:

EN_01-NameOfProject_new-text.png
GR_01-NameOfProject_new-text.png
IT_01-NameOfProject_new-text.png
...
BU_01-NameOfProject_new-text.png

非常感谢!

csv command-line-interface file-rename batch-rename
1个回答
0
投票

像这样,使用Perl的
rename

删除

-n
开关,又名dry-run当你的尝试令人满意重命名真实.

#!/usr/bin/env bash

c=0 arr=( * )
while IFS= read -r country; do
    rename -n "s/^(\d+).*/${country}_${1}NameOfProject_new-text.png/" "${arr[c++]}"
done < /tmp/file.csv

输出

rename(01-NameOfProject_Data Set 1-01.png, EN_NameOfProject_new-text.png)
rename(01-NameOfProject_Data Set 2-01.png, GR_NameOfProject_new-text.png)
rename(01-NameOfProject_Data Set 24-01.png, IT_NameOfProject_new-text.png)
rename(01-NameOfProject_Data Set 3-01.png, BU_NameOfProject_new-text.png)

如果顺序不是natural,那么使用:

#!/usr/bin/env bash

readarray -td '' files < <(
    ls --zero -v -- *.png
)
c=0
while IFS= read -r country; do
    rename -0 -n "s/^(\d+).*/${country}_${1}NameOfProject_new-text.png/" "${files[c++]}"
done < /tmp/file.csv

输出

rename(01-NameOfProject_Data Set 1-01.png, EN_NameOfProject_new-text.png)
rename(01-NameOfProject_Data Set 2-01.png, GR_NameOfProject_new-text.png)
rename(01-NameOfProject_Data Set 3-01.png, IT_NameOfProject_new-text.png)
rename(01-NameOfProject_Data Set 24-01.png, BU_NameOfProject_new-text.png)
© www.soinside.com 2019 - 2024. All rights reserved.