我有多个文件,如下所示
abcd_q1_2018.pdf
abcd_q2_2018.pdf
accc_q1_2018.pdf
accc_q2_2018.pdf
axxx_q2_2018.pdf
和一个包含
abcd 1111
accc 2222
axxx 3333
现在我想将上述文件重命名为
1111_q1_2018.pdf
1111_q2_2018.pdf
2222_q1_2018.pdf
2222_q2_2018.pdf
3333_q2_2018.pdf
您可以使用renameutil-linux软件包的命令,如下所示:
while read -r source target; do
rename "$source" "$target" $files
done < $mapping_file
$files文件或文件列表应在何处,以描述要重命名./*.pdf的文件(如果所有文件都在当前目录中)以及$mapping_file包含替换列表的文件。
该read命令会将每一行解析为两个我们分别命名为source和的变量target。我们使用这种方式while read ...; do ...; done < file来解析文件的每一行,并使用循环主体中的那些变量作为rename实用程序的参数,该实用程序在文件名中搜索字符串并将其替换为另一个。
如果您使用的是perl rename实用程序而不是util-linux实用程序(请检查man rename一下),则可以使用以下命令:
while read -r source target; do
rename "s/$source/$target/" $files
done < $mapping_file
这是在使用perl重命名的ideone上运行的示例。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。