使用 .csv 批量重命名

csh*_*eth 4 command-line batch-rename csv

我在一个位置有 700 个目录,我需要使用 .csv 文件重命名它们,如下所示:

我想用 Column_B 的条目替换 Column_A 的名称。

Column_A           Column_B

 F001               IC500
 F003               IC501
 F006               IC502
 F008               IC503
 ...                ...
Run Code Online (Sandbox Code Playgroud)

如何批量重命名目录?

αғs*_*нιη 7

首先将您的数据导出为 .csv 文件格式,如下所示:

F001,IC500
F003,IC501
F006,IC502
F008,IC503
Run Code Online (Sandbox Code Playgroud)

然后运行以下脚本将这些目录重命名为新名称:

F001,IC500
F003,IC501
F006,IC502
F008,IC503
Run Code Online (Sandbox Code Playgroud)
  • read -a用于将读取的每一行拆分为数组IFS,我从中将其重新定义为逗号,

  • 每行读入dirName变量。

  • 随着${dirName[0]}我们越来越行(列A)的第一部分。
  • 随着${dirName[1]}我们越来越行(列B)的最后一部分。

  • mv用于重命名那里的命令。
    因此mv -v "/singleFolder/${dirName[0]}" "/singleFolder/${dirName[1]}",我们将目录名称从 columnA 重命名为 columnB 中位于singleFolder目录中的新名称。

  • -v 选项显示运行命令期间正在执行的操作。


您也可以使用该命令而不将行的内容作为这样的数组:

while IFS=, read -a dirName; do
    echo mv -v "/singleFolder/${dirName[0]}" "/singleFolder/${dirName[1]}";
done < /path/to/file.csv

mv -v /singleFolder/F001 /singleFolder/IC500
mv -v /singleFolder/F003 /singleFolder/IC501
mv -v /singleFolder/F006 /singleFolder/IC502
mv -v /singleFolder/F008 /singleFolder/IC503
Run Code Online (Sandbox Code Playgroud)

注意:删除echo命令以在您的真实目录上执行重命名。