我需要在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/