在unix上不敏感地查找文件大小写



我正在一个aix上工作,并期望收到一个名为example的文件。"afilename0729"。然而,该文件是从Windows机器上传的。我无法控制,有时它的名字是"AFILENAME0729"。原来我写了一个幼稚的

ls afilename*

在脚本中定位它。而不是写像

这样的东西
find . -name "[aA][fF][iI][lL][eE][nN][aA][mM][eE][01][0-9][0-3][0-9]"

有更好的方法吗?

使用'- name'来忽略大小写。

find . -iname afilename*

我也找到了这个unix。

您可以使用-iname或为正则表达式支持使用-iregex来忽略find中的大小写匹配:

find . -iregex '.*afilename[01][0-9][0-3][0-9]'

从ls开始(仅在当前目录中查找)。不检查数字的简单形式是

ls | grep -i "afilename*"

也可以使用正则表达式
ls | egrep -i "^afilename[01][0-9][0-3][0-9]"

当你使用regex时,*不是一个普通的通配符:查找以"a"开头,以[0-9]结尾的文件,不要使用

ls | egrep -i "^a*[0-9]$"

但使用

ls | egrep -i "^a.*[0-9]$"

如果您使用的是GNU find,您可以使用不区分大小写的-iname而不是-name

来自manpage:

-iname pattern:

与name相似,但不区分大小写。例如,模式fo*F??匹配文件名FooFOOfoofOo等。模式*foo*也将匹配名为.foobar的文件。

最新更新