Answers:
实际上,这是由您的shell完成的,而不是由ls
。
在中bash
,您将使用:
shopt -s nocaseglob
和然后运行命令。
或在zsh
:
unsetopt CASE_GLOB
或以yash:
set +o case-glob
然后是您的命令。
你可能想将它放入.bashrc
,.zshrc
或.yashrc
分别。
或者,使用zsh:
setopt extendedglob
ls -d -- (#i)*abc*
(也就是说,按通配符区分大小写)
使用ksh93:
ls -d -- ~(i:*abc*)
您希望glob的工作方式不同,而不是ls
,因为这些都是ls
shell 传递给所有文件的。
shopt -s
;要取消设置,请使用shopt -u
。另外,您可以使用将所有内容包装在子shell中,以( )
使该设置不会影响父shell :(shopt -s nocaseglob ; ls *abc*)
。
[aA][bB][cC]
),没有任何可移植的方法吗?
shopt
在使用bash的过去15年中,我从未遇到过命令!
正如polemon所解释的,扩展*abc*
到文件列表的是外壳程序(不是ls)。这称为模式匹配。
除了更改整个模式匹配行为以忽略大小写之外,您还可以使用以外的其他形式的模式匹配*
。以下将在bash中完成您想要的操作:
ls *[aA][bB][cC]*
来自bash man:
[...]匹配其中任一字符。
这使得更多的细粒度匹配,你可以使用*[aA][bB]c*
匹配abc
或者ABc
,但没有abC
或ABC
。或一个法语示例,我想匹配该e
字符的所有实例:
ls *[eéèêëEÉÈÊË]*
[...]
在很多情况下它可能是有用的,尽管值得一提。
[[=e=][=E=]]
。
使用以下代码:
LC_COLLATE=en_US ; export LC_COLLATE
ls *abc*
LC_COLLATE=C ; export LC_COLLATE
您可以使用-i
添加不敏感选项的文件进行GREP 。
例如找到两者abc
,ABC
您可以运行此命令
[root@mtk bin]# ls -l | grep -i abc
640K -rw-r--r-- 1 mtk mtk 639K Sep 21 08:12 file1abc.txt
676K -rw-r--r-- 1 mtk mtk 674K Sep 21 08:12 file2ABC.txt
-i
在命令中的任何地方都没有使用过option。
在tcsh中,在.aliases中设置一个别名
alias lsnc "ls BS!* | sort -f "
(“ BS” =一个“反斜杠”;我必须使用它来使它显示在我的浏览器中。)
并使用lsnc
代替ls
在bash中,尝试在.bash_aliases中使用别名,例如
lsnc() { ls $1 | sort -f ; }
使用的选项ls
,例如,ls -l
这是一个简单的解决方法:
tcsh:
alias lsncl "ls -l BS!* | sort -f -k 9"
重击:
lsncl() { ls -l $1 | sort -f -k 9 ; }
=
在lsnocase之后不会缺少' '吗?
ls
,没有什么ls
和sort
能不能修复的情况。如其他答案中所述,该问题需要在shell中解决,而不是使用ls
语法。
shport -s nocaseglob
?