重命名文件夹中的多个文件-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

祖安文状元 2020-01-06 16:20:22 93

我有多个文件,如下所示

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
分享到
取消 提交回答
全部回答(1)
  • 祖安文状元
    2020-01-06 16:20:34

    您可以使用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上运行的示例。

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章