我需要一个重命名大量文件的脚本。我有一个包含大量文件的文件夹。每个文件都由ID命名。然后我有一个像这样的CSV文件:
OLDID; NEWID
OLDID; NEWID
等...
每个新旧ID都是特定的和原创的。我想问一下最好的方法是什么,或者在bash / batch中提供一些帮助。
答案 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。