使用 bash 脚本搜索匹配的文件名模式
Search for matching filename pattern with a bash script
首先,如果这是一个菜鸟问题,我深表歉意 - 我对 bash 脚本编写还很陌生。
我有一个包含多种文件和文件夹的目录。我需要对所有匹配特定模式的文件执行一组操作。这是模式:prefix_suffix.ext
。 _suffix.ext
对于所有目标文件都是完全相同的,只有 prefix
部分是可变的。
是否有可能(如果可以,如何?)在 bash 内循环遍历所有匹配模式的文件名,并为 filename
设置一个变量,为 prefix
设置一个变量在循环内。我想避免使用 sed
.
等外部工具
如有任何帮助,我们将不胜感激!谢谢!
for filename in *_suffix.ext; do
prefix="${filename%_suffix.ext}"
#do your thing here
done
这使用 POSIX 后缀剥离功能(请参阅 man dash
并键入 /suffix<enter>
以搜索 suffix
):
${parameter%word} Remove Smallest Suffix Pattern. The word is
expanded to produce a pattern. The parameter expansion then results
in parameter, with the smallest portion of the suffix matched by the
pattern
deleted.
(%% 会去除最长的匹配后缀,但由于我们在这里使用的是文字后缀而不是 glob 模式,因此在这种情况下两者是相同的)。
可运行示例:
for filename in pre1_suffix.ext pre2_suffix.ext; do
prefix="${filename%_suffix.ext}"
echo "$prefix"
done
将打印
pre1
pre2
首先,如果这是一个菜鸟问题,我深表歉意 - 我对 bash 脚本编写还很陌生。
我有一个包含多种文件和文件夹的目录。我需要对所有匹配特定模式的文件执行一组操作。这是模式:prefix_suffix.ext
。 _suffix.ext
对于所有目标文件都是完全相同的,只有 prefix
部分是可变的。
是否有可能(如果可以,如何?)在 bash 内循环遍历所有匹配模式的文件名,并为 filename
设置一个变量,为 prefix
设置一个变量在循环内。我想避免使用 sed
.
如有任何帮助,我们将不胜感激!谢谢!
for filename in *_suffix.ext; do
prefix="${filename%_suffix.ext}"
#do your thing here
done
这使用 POSIX 后缀剥离功能(请参阅 man dash
并键入 /suffix<enter>
以搜索 suffix
):
${parameter%word} Remove Smallest Suffix Pattern. The word is expanded to produce a pattern. The parameter expansion then results in parameter, with the smallest portion of the suffix matched by the pattern deleted.
(%% 会去除最长的匹配后缀,但由于我们在这里使用的是文字后缀而不是 glob 模式,因此在这种情况下两者是相同的)。
可运行示例:
for filename in pre1_suffix.ext pre2_suffix.ext; do
prefix="${filename%_suffix.ext}"
echo "$prefix"
done
将打印
pre1
pre2