Ich möchte alle Dateien auflisten, die einem bestimmten Muster entsprechen, ohne den Fall zu beachten.
Zum Beispiel führe ich die folgenden Befehle aus:
ls *abc*
Ich möchte alle Dateien sehen, die "abc" als Teil des Dateinamens haben und dabei den Fall ignorieren, wie
-rw-r--r-- 1 mtk mtk 0 Sep 21 08:12 file1abc.txt
-rw-r--r-- 1 mtk mtk 0 Sep 21 08:12 file2ABC.txt
Hinweis
Ich habe die Manpage nach Fall durchsucht, aber nichts gefunden.
shport -s nocaseglob
?shopt -s
; Um es zu deaktivieren , verwenden Sieshopt -u
. Alternativ können Sie alles in einer Subshell wickeln , indem Sie( )
so , dass die Einstellung nicht mit den Eltern - Shell nicht beeinflusst:(shopt -s nocaseglob ; ls *abc*)
.[aA][bB][cC]
)?shopt
in den letzten 15 Jahren bei der Verwendung von Bash nicht auf Kommando gestoßen bin !Wie von polemon erklärt, ist es die Shell (nicht ls), die sich
*abc*
auf eine Liste von Dateien erstreckt. Dies wird als Mustervergleich bezeichnet .Abgesehen von der Änderung des gesamten Pattern Matching-Verhaltens, um Groß- und Kleinschreibung zu ignorieren, können Sie auch eine andere Form des Pattern Matching als das verwenden
*
. Folgendes würde tun, was Sie in der Bash wollen:Von bash man:
Dies ermöglicht mehr feinkörnig Matching , wo man verwenden könnte
*[aA][bB]c*
passenabc
oderABc
aber nichtabC
oderABC
. Oder ein Beispiel in Französisch, in dem ich alle Instanzen dese
Zeichens finden möchte :quelle
[...]
kann jedoch in vielen Fällen nützlich sein, und ich dachte, es wäre erwähnenswert.[[=e=][=E=]]
.Sie können auch die
-i
Option (--ignore-case) hinzufügengrep
, um die folgende Ausgabe zu erhalten.quelle
Ich denke nicht, dass dies mit ls möglich ist, aber Sie könnten stattdessen find verwenden:
quelle
benutze den folgenden Code:
quelle
Sie können die Datei mit
-i
der Option "Unempfindlich" GREPEN.Zum Beispiel beide zu finden
abc
undABC
Sie können diesen Befehl ausführenquelle
-i
Option in Ihrem Befehl verwendet.ls
?Legen Sie in tcsh einen Alias in .aliases fest
("BS" = ein "Backslash"; ich musste diesen verwenden, um ihn in meinem Browser anzuzeigen.)
und verwenden Sie
lsnc
stattls
Versuchen Sie in bash einen Alias in .bash_aliases wie
Mit Optionen zum
ls
Beispiells -l
ist hier eine einfache Lösung:tcsh:
bash:
quelle
=
nach lsnocase kein ' ' verpassen?ls
, gibt es nichtsls
undsort
kann das Problem beheben. Wie in anderen Antworten erwähnt, muss das Problem in der Shell und nicht mit einerls
Syntax gelöst werden .