使用bash脚本搜索匹配的文件名模式

时间:2015-11-19 22:55:56

标签: bash filenames

首先,如果这是一个noob问题,我道歉 - 我对bash脚本很不熟悉。

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

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

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

1 个答案:

答案 0 :(得分:3)

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