我需要在Linux中重命名数百个文件,以从命令行更改每个文件的唯一标识符。为了举例,我有一个包含以下内容的文件:

old_name1 new_name1
old_name2 new_name2

并且需要将名称从新ID更改为旧ID。文件名包含ID,但也包含其他字符。因此,我的计划最终是:
abcd_old_name1_1234.txt ==> abcd_new_name1_1234.txt
abcd_old_name2_1234.txt ==> abcd_new_name2_1234.txt

在这里,rename的使用显然是相当有用的,但是我正在努力研究如何遍历所需名称更改的文件,并将其作为输入传递给rename

编辑:为了澄清,我正在寻找数百个不同的重命名命令,需要进行的不同更改在文本文件中列出。

抱歉,如果这个问题已经得到解决,我可以追寻,但找不到类似的情况。

最佳答案

while read -r old_name new_name; do
    rename "s/$old_name/$new_name/" *$old_name*.txt
done < file_with_names

这样,您就可以从 file_with_names 中读取ID,并重命名文件以$old_name替换$new_name,而其余文件名保持不变。

关于Linux根据输入文件重命名文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27231265/

10-14 15:41
查看更多