我正在一个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??
匹配文件名Foo
、FOO
、foo
、fOo
等。模式*foo*
也将匹配名为.foobar
的文件。