Ich möchte alle Dateien entfernen, die wordpress-891.sql
aus dem aktuellen Verzeichnis zu stammen scheinen (nicht aus Unterverzeichnissen).
Wird rm wordpress-*.sql
das funktionieren oder werden dadurch auch Übereinstimmungen aus Unterverzeichnissen entfernt?
Antwort1
Nein. Normales Globbing *
ist nicht rekursiv und das auch nicht rm
.
Wenn ein Verzeichnisname übereinstimmt, wird er nicht entfernt – Sie benötigen das -r
Flag, um ein Verzeichnis zu löschen.
Wenn Sie sicher sind, dass Sie die Dateien löschen möchten, können Sie dies bedenkenlos tun.
Sie können auch rm
interaktive
rm -i wordpress-*.sql
dann wird vor dem Löschen jeder Datei eine Bestätigung verlangt
Antwort2
Ja, es erledigt den Trick für Sie und entfernt alle Dateien mit diesem Schema im aktuellen Verzeichnis. Und NEIN, es entfernt keine Dateien in den Unterverzeichnissen.
Wenn Sie nicht sicher sind, was passiert, wenn Sie einen Befehl wie den folgenden ausführen:
rm wordpress-*.sql
dann führen Sie es einfach mit folgendem Befehl aus ls
:
ls wordpress-*.sql
Die Dateien, die Sie in der Ausgabe sehen, sind diejenigen, die entfernt werden.
Wenn Sie versuchen, eine Liste wie diese zu erhalten foo*
, ist es besser, -d
den Schalter zu verwenden, um ls
zu verhindern, dass Dateien innerhalb eines Verzeichnisses mit dem Namen foobar/
usw. aufgelistet werden.
ls -d foo*
Dieser Trick funktioniert für Befehle, die nicht dazu verwendet werden, die Aufgabe rekursiv auszuführen.
Sie können auch die gewünschte Eingabe eingeben, z. B.: wordpress-*
Drücken Sie dann Ctrl+ Alt+ *. Nun werden alle Übereinstimmungen automatisch vor Ihren Befehl eingegeben.
Antwort3
Nein, rm
es erfolgt keine Rekursion durch Unterverzeichnisse.
SehenLöschen Sie übereinstimmende Dateien in allen Unterverzeichnissen - SuperUserfür Methoden zum Löschen von Dateien in Unterverzeichnissen.
Wenn Sie befürchten, versehentlich etwas Wichtiges zu löschen, verwenden Sie gvfs-trash
(wodurch Dateien in den Papierkorb verschoben werden) anstelle von rm
(wodurch Dateien dauerhaft gelöscht werden).
Antwort4
Wenn Sie alle übereinstimmenden Dateien wie suchen und löschen möchten wordpress-*.sql
, können Sie find
den Befehl verwenden. :)
wordpress-*.sql
Wenn Sie beispielsweise alle übereinstimmenden Dateien mit unter entfernen möchten test_dir
, gehen Sie wie folgt vor.
cd test_dir
find . -name "wordpress-*.sql" -exec rm -f {} \;
Wenn find
das Programm tatsächlich eine passende Datei findet, versucht es, einen Befehl auszuführen, der der Option folgt -exec
. In diesem Fall rm -f {}
wird ausgeführt und {}
in den passenden Dateinamen geändert. Beispiel:
rm -f wordpress-169.sql
Mit der Option können Sie auch die Tiefe der Unterverzeichnisse festlegen -maxdepth
.
cd test_dir
find . -maxdepth 3 -name "wordpress-*.sql" -exec rm -f {} \;
Bitte beachten Sie, dass Sie die Option vor anderen Optionen angeben müssen -maxdepth
. Andernfalls erhalten Sie möglicherweise Ergebnisse, die Sie wirklich nicht sehen möchten.