gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:27:45 25 4
gpt4 key购买 nike

首先,如果这是一个菜鸟问题,我深表歉意 - 我对 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 - 使用 bash 脚本搜索匹配的文件名模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com