Ich möchte alle Dateien, die so aussehen, wordpress-891.sql
aus dem aktuellen Verzeichnis entfernen (nicht in Unterverzeichnissen).
Wird rm wordpress-*.sql
der Trick ausgeführt oder werden auch Übereinstimmungen aus Unterverzeichnissen entfernt?
command-line
bash
HorusCoding
quelle
quelle
rm
keine Dateinamenerweiterung ...rm "foo*"
würde versuchen, eine Datei mit einem wörtlichen Stern im Namen zu entfernen.Antworten:
Nein. Normales Globbing
*
ist nicht rekursiv und ist es auch nichtrm
.Wenn ein Verzeichnisname übereinstimmt, wird er nicht entfernt - Sie benötigen das
-r
Flag, um ein Verzeichnis zu löschen.Wenn Sie also sicher sind, dass Sie diese Dateien löschen möchten, ist dies sicher.
Sie können auch
rm
interaktiv machenAnschließend werden Sie vor dem Löschen der einzelnen Dateien um Bestätigung gebeten
quelle
Ja, es macht den Trick für Sie und entfernt alle Dateien mit diesem Schema im aktuellen Verzeichnis. Und NEIN, es werden keine Dateien in den Unterverzeichnissen entfernt.
Wann immer Sie nicht sicher sind, was passiert, wenn Sie einen Befehl ausführen wie:
dann starte es einfach mit
ls
:Die Dateien, die Sie in der Ausgabe sehen, werden entfernt.
Wenn Sie versuchen, eine Liste wie: zu erhalten
foo*
, ist es besser,-d
switch withls
zu verwenden, um zu verhindern, dass Dateien mit einem Verzeichnis namensfoobar/
etc. aufgelistet werden .Dieser Trick funktioniert für Befehle, die nicht zur rekursiven Ausführung der Aufgabe verwendet werden.
Sie können auch die gewünschte Eingabe eingeben, z. B .:
wordpress-*
Drücken Sie dann Ctrl+ Alt+ *, und alle Übereinstimmungen werden automatisch vor Ihrem Befehl eingegeben.quelle
printf "%s\n" wordpress-*.sql
echo rm file*
.-rf
rm ./*
oder sicherer abdeckenrm -- *
.xargs -0
@DavidFoersterls foo*
und ein Verzeichnis haben, das aufgerufen wirdfoobar
, erhalten Sie auch eine Auflistung des Inhalts dieses Verzeichnisses. Es ist alsols
nicht wirklich der beste Weg, um das zu erreichen, was derrm
Wille schlägtNein,
rm
nicht durch Unterverzeichnisse rekursiv.Informationen zum Löschen von Dateien in Unterverzeichnissen finden Sie unter Löschen übereinstimmender Dateien in allen Unterverzeichnissen - SuperUser .
Wenn Sie aus Versehen etwas Wichtiges löschen möchten, verwenden Sie
gvfs-trash
(wodurch Dateien in den Papierkorb verschoben werden) anstelle vonrm
(wodurch Dateien dauerhaft gelöscht werden).quelle
gvfs-trash
Erwähnung etwas gelernt heute kaum verwenden ...Wenn Sie alle übereinstimmenden Dateien wie finden und löschen möchten
wordpress-*.sql
, können Sie denfind
Befehl verwenden. :)Zum Beispiel möchten Sie alle übereinstimmenden Dateien mit
wordpress-*.sql
unter entfernen. Gehentest_dir
Sie wie folgt vor.Wenn das
find
Programm wirklich eine passende Datei findet, versucht es, einen Befehl auszuführen, der der-exec
Option after folgt . In diesem Fallrm -f {}
wird ausgeführt und{}
in den Namen der Übereinstimmungsdatei geändert. Z.BSie können auch die Tiefe der Unterverzeichnisse mit der
-maxdepth
Option einstellen .Bitte beachten Sie, dass Sie die
-maxdepth
Option vor anderen Optionen angeben müssen . Ansonsten könnten Sie die Ergebnisse treffen, die Sie wirklich nicht sehen wollen.quelle
-maxdepth
." Verwenden Sie-exec rm -f {} +
statt-exec \;
oder noch besser nur-delete