【问题标题】:Using rename and grep patterns to rename files in Terminal使用重命名和 grep 模式重命名终端中的文件
【发布时间】:2018-07-27 18:56:12
【问题描述】:

我正在尝试使用 rename 更改目录中多个文件的名称,但我使用的模式不适用于 rename,即使它在我的文本编辑器 (BBEdit) 中有效.我想知道如何修改我正在使用的rename 命令或模式,以便我可以摆脱每个文件的长前缀。

我的目录列表如下所示:

bos012_attempt_2018-02-15-01-52-18_KIC Document 0001.pdf
gem512_attempt_2018-02-14-20-30-11_Geo HW 2.pdf
kgs252_attempt_2018-02-14-23-35-03_kgs252_hw2.pdf
nrs728_attempt_2018-02-15-10-04-42_mids.png
oko018_attempt_2018-02-15-23-57-57_Hw2.pdf

我想改成

KIC Document 0001.pdf
Geo HW 2.pdf
kgs252_hw2.pdf
mids.png
Hw2.pdf

使用rename -vs 's/\D\D\D\d\d\d_attempt_2018-\d\d-\d\d-\d\d-\d\d-\d\d_/''/g' * 名称不会发生变化。尽管如此,将模式 \D\D\D\d\d\d_attempt_2018-\d\d-\d\d-\d\d-\d\d-\d\d_ 更改为无字符在我的文本编辑器中效果很好。我尝试过不同的东西,例如

rename -vs \D\D\D\d\d\d_attempt_2018-\d\d-\d\d-\d\d-\d\d-\d\d_ '' *

什么都没有。

mydir $ rename -nvs \D\D\D\d\d\d_attempt_2018-\d\d-\d\d-\d\d-\d\d-\d\d_ '' *

返回

Using expression: sub { use feature ':5.18';
s/\Q${\"DDDddd_attempt_2018\-dd\-dd\-dd\-dd\-dd_"}// }
'bos012_attempt_2018-02-15-01-52-18_KIC_Document_0001.pdf' unchanged
'gem512_attempt_2018-02-14-20-30-11_Geo_HW_2.pdf' unchanged
'nrs728_attempt_2018-02-15-10-04-42_mids.png' unchanged
'oko018_attempt_2018-02-15-23-57-57_Hw2.pdf' unchanged

【问题讨论】:

    标签: regex rename


    【解决方案1】:

    根据您的rename 版本,您可以使用此rename 命令:

    rename -n 's/.*_attempt_\d{4}(-\d{2}){5}_//' *.{pdf,png}
    

    'bos012_attempt_2018-02-15-01-52-18_KIC Document 0001.pdf' would be renamed to 'KIC Document 0001.pdf'
    'gem512_attempt_2018-02-14-20-30-11_Geo HW 2.pdf' would be renamed to 'Geo HW 2.pdf'
    'kgs252_attempt_2018-02-14-23-35-03_kgs252_hw2.pdf' would be renamed to 'kgs252_hw2.pdf'
    'oko018_attempt_2018-02-15-23-57-57_Hw2.pdf' would be renamed to 'Hw2.pdf'
    'nrs728_attempt_2018-02-15-10-04-42_mids.png' would be renamed to 'mids.png'
    

    如果您对输出感到满意,请删除 dry-run 的 -n 参数。

    【讨论】:

    • 对我不起作用。没有任何消息返回。使用-n 或不使用-n
    • 您的文件名可能使用了不同的模式,或者您可能没有使用相同的rename perl 实用程序。
    • 我刚刚意识到rename 没有递归选项。这就是问题所在。但我希望它有。
    • 使用它find ... -exec
    • 是的,我很挣扎。它的-regex 没有按我的预期行事。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2017-10-28
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多