【问题标题】:Search for matching filename pattern with a bash script使用 bash 脚本搜索匹配的文件名模式
【发布时间】:2015-11-19 22:55:55
【问题描述】:

首先,如果这是一个菜鸟问题,我深表歉意 - 我对 bash 脚本很陌生。

我有一个包含多种文件和文件夹的目录。我需要对匹配某个模式的所有文件执行一组操作。这是模式:prefix_suffix.ext_suffix.ext 与所有目标文件完全相同,只有 prefix 部分是可变的。

是否有可能(如果是,如何?)在 bash 中循环所有与模式匹配的文件名,并在循环中为filename 设置一个变量,为prefix 设置一个变量。我想避免使用外部工具,例如sed

任何帮助将不胜感激!谢谢!

【问题讨论】:

    标签: bash filenames


    【解决方案1】:
    for filename in *_suffix.ext; do 
        prefix="${filename%_suffix.ext}"
        #do your thing here
    done
    

    这使用 POSIX 后缀剥离功能(请参阅 man dash 并键入 /suffix<enter> 以搜索 suffix):

    ${parameter%word} 删除最小后缀模式。这个词是 展开以产生图案。参数展开然后结果 在参数中,后缀的最小部分与 图案 已删除。

    (%% 会去除最长的匹配后缀,但由于我们在这里使用文字后缀而不是 glob 模式,因此在这种情况下两者是相同的)。

    可运行示例:

    for filename in pre1_suffix.ext pre2_suffix.ext; do     
           prefix="${filename%_suffix.ext}"
           echo "$prefix"
    done
    

    将打印

    pre1
    pre2
    

    【讨论】:

    • 谢谢!它工作得很好——我会尽快接受。
    猜你喜欢
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多