如何在Bash脚本中忽略大小写匹配文件扩展名

3

假设我想匹配.abc扩展名,但它可能会作为.ABC.AbC出现。如何识别所有这些变体的.abc扩展名以处理.abc文件?

现在我正在使用:

ls | grep -i .abc

但我听说管道到grep通常不是最好的方法。有更好的方法吗?


你到底想做什么?你能把那个命令放在上下文中吗? - Etan Reisner
我有一个处理程序,它需要一个zip文件。该zip文件包含一个.abc文件,我想要对其进行处理,但是过去我曾因未捕获文件扩展名的奇怪变化而受挫。因此,我正在努力确保我的脚本始终能够识别.abc文件,无论扩展名看起来如何。 - rage
2个回答

4

如果您直接输入扩展名,可以使用字符类:

ls *.[Aa][Bb][Cc]

你也可以使用find命令的-iname选项:
find -maxdepth 1 -iname '*.abc'

2
您可以使用shopt内置命令中的nocaseglob选项来使模式匹配不区分大小写。
$ touch foo.abc foo.ABC
$ echo *.abc
foo.abc
$ shopt -s nocaseglob
$ echo *.abc
foo.ABC foo.abc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接