GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Platzhalterzeichen `* ` passt nicht zu einer Zeichenfolge?

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 .


Linux
  1. So benennen Sie Dateien unter Linux um

  2. Linux-ls-Befehl - Dateien auflisten

  3. Wandeln Sie eine Ausgabe in einen String um

  4. Wie kann ich den tar-Befehl verwenden, um Dateien ohne Komprimierung zu gruppieren?

  5. Gibt es ein Unix-Befehlszeilentool, das Schriftartdateien analysieren kann?

Cp-Befehl in Linux (Dateien kopieren)

Rm-Befehl unter Linux

lsof-Befehl unter Linux (10 Beispiele)

Einige gute Alternativen zu du Command

Anzahl der Dateien, die eine bestimmte Zeichenfolge enthalten?

ls-Befehl unter Linux/UNIX