回答:
これは実際には、シェルではなく、シェルによって行われます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*)
グロビングは、シェルでls
はなくすべてのファイルであるため、異なる動作をする必要がありますls
。
shopt -s
、; を使用します。設定を解除するには、を使用しますshopt -u
。または、を使用( )
して、設定が親シェルに影響を与えないように、すべてをサブシェルでラップすることができます(shopt -s nocaseglob ; ls *abc*)
。
[aA][bB][cC]
?
shopt
です。過去15年間にbashを使用していても、コマンドに出会えなかったとは信じられません。
polemonで説明したように、*abc*
ファイルのリストに拡張されるのは(lsではなく)シェルです。これは、パターンマッチングと呼ばれます。
パターンマッチングの動作全体を変更して大文字と小文字を無視する以外に、以外のパターンマッチングの形式を使用できます*
。以下は、bashで必要なことを行います。
ls *[aA][bB][cC]*
バッシュマンから:
[...]囲まれた文字のいずれかに一致します。
これにより、一致させるために使用できる*[aA][bB]c*
、abc
または一致さABc
せないabC
またはにするための、よりきめの細かい一致が可能になりますABC
。または、e
文字のすべてのインスタンスに一致させたいフランス語の例:
ls *[eéèêëEÉÈÊË]*
[...]
は多くの場合に役立つ可能性があり、言及する価値はありましたが。
[[=e=][=E=]]
です。
-i
(--ignore-case)オプションを追加しgrep
て、以下の出力を取得することもできます。
[root@localhost ~]# ls -l | grep -i abc
-rw-r--r-- 1 root root 0 Feb 25 20:41 fileabc.txt
-rw-r--r-- 1 root root 0 Feb 25 20:41 fileABC.txt
次のコードを使用します。
LC_COLLATE=en_US ; export LC_COLLATE
ls *abc*
LC_COLLATE=C ; export LC_COLLATE
tcshで、.aliasesにエイリアスを設定します
alias lsnc "ls BS!* | sort -f "
(「BS」= 1つの「バックスラッシュ」。これを使用してブラウザに表示する必要がありました。)
の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
することができ、状況を修正することができます。他の回答で述べたように、問題はls
構文ではなくシェルで解決する必要があります。
shport -s nocaseglob
?