【问题标题】:Rename Two files in the Same Folder重命名同一文件夹中的两个文件
【发布时间】:2015-01-04 01:26:09
【问题描述】:

文件

  events-number1.10a.pdf    

结果

 events-number1.10a.docx.pdf  

理想

 events-number1.10a.pdf   
 events-number1.10a.docx.pdf       

【问题讨论】:

  • 您的预期输出是什么?第二还是第三?

标签: bash rename cp


【解决方案1】:

一个简单的重命名命令就可以完成这项工作。

rename 's/(?=\.pdf$)/.docx/' *.pdf

【讨论】:

    【解决方案2】:

    你可以试试这个简单的 bash 脚本

    #!/bin/bash
    for file in  *.pdf
    do
        new_file=$(echo "$file"  | sed -r 's/(.*)(\.pdf)/\1.docx\2/')
        mv $file $new_file
    done
    

    输出:

    events-number1.index10a.docx.pdf 
    events-number1.index10b.docx.pdf 
    events-number1.index10c.docx.pdf 
    events-number2.index10a.docx.pdf 
    events-number2.index10b.docx.pdf 
    events-number2.index10c.docx.pdf 
    

    如果你想使用cp 命令而不是mv 命令来复制文件

    cp $file $new_file
    

    所以你现有的文件不会改变。

    说明:
    将所有日志文件传递给 for 循环,然后将文件名拆分为使用sed 命令的预期结果并存储在一个变量中。然后将旧文件 mv 到新文件,这意味着您的预期文件。

    【讨论】:

    • 哇,我还在看教程。可能的答案已经准备好了!
    • 你能解释一下哇,我还在看教程。可能的答案已经准备好了!你能解释一下吗?我不只是想要答案,这不是理想的结果,这意味着我需要根据你的解释来解决这个问题。顺便说一句,它不适用于 Mac
    • 使用 bash 参数扩展技术可以将两条内线合并为一个:mv "${file}" "${file#log}main.gmt.log"
    • @user3096996,更新了我的答案。
    • @Jdamian,您的建议是错误的,"${file#log}main.gmt.log" 此输出在文件末尾添加main.gmt.log,如events-number2.index10a.log,但结果为@ 987654330@
    猜你喜欢
    • 2015-05-10
    • 2020-05-07
    • 2018-12-28
    • 1970-01-01
    • 2013-05-25
    • 2021-04-16
    • 2014-02-08
    • 2012-11-12
    • 2010-10-15
    相关资源
    最近更新 更多