在 unix 上不区分大小写地查找文件
Find file case insensitively on unix
我正在开发 aix 并期望收到一个名为例如"afilename0729"。但是,该文件是从 Windows 机器上传的。我无法控制它有时带有名称 "AFILENAME0729"。本来我写的很幼稚
ls afilename*
在脚本中找到它。但是不要写像
这样的东西
find . -name "[aA][fF][iI][lL][eE][nN][aA][mM][eE][01][0-9][0-3][0-9]"
有没有更好的方法来做到这一点?
使用“-iname”忽略大小写。
例如
find . -iname afilename*
我还找到了这个 unix.stackexchange 相同问题的答案
如果您使用的是 GNU find
,则可以使用不区分大小写的 -iname
而不是 -name
。
来自manpage
:
-iname pattern
:
Like -name, but the match is case insensitive. For example, the patterns fo*
and F??
match the file names Foo
, FOO
, foo
, fOo
, etc. The pattern *foo*
will also match a file called .foobar
.
您可以使用 -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]"
当您使用正则表达式时,* 不是普通的通配符:
查找以 "a" 开头并以 [0-9] 结尾的文件,不要使用
ls | egrep -i "^a*[0-9]$"
但使用
ls | egrep -i "^a.*[0-9]$"
我正在开发 aix 并期望收到一个名为例如"afilename0729"。但是,该文件是从 Windows 机器上传的。我无法控制它有时带有名称 "AFILENAME0729"。本来我写的很幼稚
ls afilename*
在脚本中找到它。但是不要写像
这样的东西find . -name "[aA][fF][iI][lL][eE][nN][aA][mM][eE][01][0-9][0-3][0-9]"
有没有更好的方法来做到这一点?
使用“-iname”忽略大小写。
例如
find . -iname afilename*
我还找到了这个 unix.stackexchange 相同问题的答案
如果您使用的是 GNU find
,则可以使用不区分大小写的 -iname
而不是 -name
。
来自manpage
:
-iname pattern
:Like -name, but the match is case insensitive. For example, the patterns
fo*
andF??
match the file namesFoo
,FOO
,foo
,fOo
, etc. The pattern*foo*
will also match a file called.foobar
.
您可以使用 -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]"
当您使用正则表达式时,* 不是普通的通配符: 查找以 "a" 开头并以 [0-9] 结尾的文件,不要使用
ls | egrep -i "^a*[0-9]$"
但使用
ls | egrep -i "^a.*[0-9]$"