我需要在Linux中重命名数百个文件,以便从命令行更改每个文件的唯一标识符.为了举例,我有一个包含以下内容的文件:
old_name1 new_name1
old_name2 new_name2
Run Code Online (Sandbox Code Playgroud)
并需要将名称从新ID更改为旧ID.文件名包含ID,但也有额外的字符.因此,我的计划最终是:
abcd_old_name1_1234.txt ==> abcd_new_name1_1234.txt
abcd_old_name2_1234.txt ==> abcd_new_name2_1234.txt
Run Code Online (Sandbox Code Playgroud)
rename在这里使用显然是相当有用的,但我正在努力弄清楚如何迭代所需名称更改的文件并将其作为输入传递给rename?
编辑:为了澄清,我希望制作数百个不同的重命名命令,需要进行的不同更改列在文本文件中.
如果已经回答道歉,我有一个很好的打猎,但找不到类似的情况.
while read -r old_name new_name; do
rename "s/$old_name/$new_name/" *$old_name*.txt
done < file_with_names
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以从file_with_names中读取ID,并重命名文件,替换为保留文件名的其余部分不变。$old_name$new_name
| 归档时间: |
|
| 查看次数: |
1777 次 |
| 最近记录: |