【问题标题】:unix move command regexunix 移动命令正则表达式
【发布时间】:2013-07-07 09:44:37
【问题描述】:

我有一堆格式的文件

blahblah1.java.bakblahblah2.java.bak

我想将所有以 .bak 结尾的文件更改为 .java。是否可以使用mv 命令执行此操作?也许像mv (.*\.java)\.bak $1 这样的东西?

【问题讨论】:

    标签: regex unix filenames mv


    【解决方案1】:

    怎么了

    for i in *java.bak ; do mv "$i" `basename "$i" .bak` ; done
    

    for i in *java.bak ; do mv "$i" "${i%.bak}" ; done
    

    如果你在 bash 中。命令行文件匹配与 Perl 中的正则表达式或 bash 中的=~ 比较并不完全相同,您无法捕获组。请注意差异:例如,*. 具有非常不同的含义。

    【讨论】:

    • 没什么,只是不知道你能做到这一点:D
    • 我一时糊涂了;这发生在老年。在我看来,bash 每天都有新功能添加(“在我的时代,我们没有花哨的 ${i%.pdf},我们使用 basename,我们很高兴拥有它”)和我认为 bash 可能已经获得了像真正的正则表达式这样的东西:-)
    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 2021-12-19
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多