重命名大量文件

时间:2016-01-23 22:00:59

标签: bash file batch-file rename

我需要一个重命名大量文件的脚本。我有一个包含大量文件的文件夹。每个文件都由ID命名。然后我有一个像这样的CSV文件:

  

OLDID; NEWID

     

OLDID; NEWID

     

等...

每个新旧ID都是特定的和原创的。我想问一下最好的方法是什么,或者在bash / batch中提供一些帮助。

3 个答案:

答案 0 :(得分:4)

批量解决方案与e0k的bash解决方案非常相似;您一次读取一行中的文件,在分号上拆分行,并相应地重命名该文件。

for /f "tokens=1,2 delims=;" %%A in (ids.csv) do ren "%%A" "%%B"

这假设您的ID位于名为ids.csv

的文件中

答案 1 :(得分:0)

如果您使用 bash (在Linux,UNIX等世界中使用的shell),您可以使用以下基于this内部字段分隔符答案的短脚本。这假设您使用分号(;)作为" CSV"的分隔符。文件,并且只有一个这样的分隔符。

#!/bin/bash

while IFS=';' read -ra names; do
    mv "${names[0]}" "${names[1]}";
done < translation.csv

其中translation.csv是您的文件,其中包含oldname;newname格式的翻译名称。

如果您要求批量文件(例如Windows,DOS等),那么这是另一个世界中不同的动物。

答案 2 :(得分:0)

鉴于您的操作系统是一些unix(如linux),并且考虑到使用csv文件是您自己的选择,可能有一种更简单的方法:mmv可以一次性重命名多个文件,使用模式匹配原始文件,并允许在目标文件名中使用匹配的字符串。请参阅http://ss64.com/bash/mmv.html