Als Erweiterung Zu Shaidos Antwort möchte ich eine Erklärung geben, warum der -a
Option funktioniert hier nicht:
Die ls
Befehl nicht Platzhalter verarbeiten. Der Befehlszeileninterpreter führt diesen Schritt aus:
Wenn Sie die Befehlszeile "mycommand *.c
" Der Befehlszeileninterpreter ersetzt zuerst die Platzhalterzeichenfolge "*.c
" durch die Liste der übereinstimmenden Dateien und führen Sie dann die resultierende Befehlszeile aus:
mycommand a.c file.c test.c
Der Befehlszeileninterpreter arbeitet für alle Befehle auf die gleiche Weise, sodass er nicht wissen kann, dass -a
bedeutet "einschließlich versteckter Dateien" im Fall von ls
Befehl (während -a
hat für andere Befehle eine ganz andere Bedeutung)...
Dateien, die mit einem Punkt beginnen, werden standardmäßig in Dateilisten ausgeblendet. Der einfachste Weg, diese Art von Dateien zu finden, wäre, einen Punkt an den Anfang des Ausdrucks zu setzen. Dies wird jedoch nur mit Dateien übereinstimmen, die mit .
beginnen .
ls -al .*.swo
Die Alternative ist das Setzen von dotglob
bevor Sie den Befehl ausführen, dann Dateien, die mit .
beginnen enthalten sein.
shopt -s dotglob
Fügen Sie es Ihrem ~/.bashrc
hinzu als Standard festlegen.
Beachten Sie die Einstellung dotglob
kann zu unbeabsichtigten Ergebnissen führen bei Verwendung der Bash-Shell, da beide .
(aktuelles Verzeichnis) und ..
(Elternverzeichnis) erscheint bei Verwendung von *
. Mit dotglob
gesetzt, nie versuchen Sie, rm -R *
zu verwenden .