Entfernt „rm files*“ alle Übereinstimmungen aus allen Unterverzeichnissen?

Entfernt „rm files*“ alle Übereinstimmungen aus allen Unterverzeichnissen?

Ich möchte alle Dateien entfernen, die wordpress-891.sqlaus dem aktuellen Verzeichnis zu stammen scheinen (nicht aus Unterverzeichnissen).

Wird rm wordpress-*.sqldas 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 -rFlag, 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 rminteraktive

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, -dden Schalter zu verwenden, um lszu 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, rmes 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 findden Befehl verwenden. :)

wordpress-*.sqlWenn 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 finddas 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.

verwandte Informationen