开发者社区> 问答> 正文

重命名文件夹中的多个文件

我有多个文件,如下所示

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

展开
收起
祖安文状元 2020-01-06 16:20:22 550 0
1 条回答
写回答
取消 提交回答
  • 您可以使用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上运行的示例。

    2020-01-06 16:20:34
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载