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

时间:2015-07-29 03:22:35

标签: bash shell awk sed ksh

我正在研究aix并希望收到一个名为eg的文件“afilename0729”。但是,该文件是从Windows计算机上载的。我无法控制,有时它会带有名称“AFILENAME0729”。本来我写了一个天真的

ls afilename*

在脚本中找到它。但不是写像

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

有没有更好的方法呢?

4 个答案:

答案 0 :(得分:2)

使用'-iname'忽略大小写。

e.g。

find . -iname afilename*

我也为同一个问题找到了这个unix.stackexchange答案

答案 1 :(得分:2)

您可以使用max或正则表达式支持使用-iname来忽略-iregex中的案例匹配:

find

答案 2 :(得分:1)

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

来自manpage

  

-iname pattern

     

与-name类似,但匹配不区分大小写。例如,模式fo*F??匹配文件名FooFOOfoofOo等。模式{{ 1}}还将匹配名为*foo*的文件。

答案 3 :(得分:1)

你开始使用ls(仅查看当前目录)。 没有检查数字的简单形式将是

ls | grep -i "afilename*"

您还可以使用带

的正则表达式
ls | egrep -i "^afilename[01][0-9][0-3][0-9]"

使用正则表达式时,*不是普通的通配符: 寻找以" a"开头的文件以[0-9]结尾,不要使用

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

但请使用

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