Wie kann ich unter Linux alle .swp-Dateien in allen meinen Unterverzeichnissen entfernen?
Wie kann ich unter Linux alle .swp-Dateien in allen meinen Unterverzeichnissen entfernen?
Antworten:
Entfernen Sie alle * .swp-Dateien unter dem aktuellen Verzeichnis. Verwenden Sie den find
Befehl in einer der folgenden Formen:
find . -name \*.swp -type f -delete
Die -delete
Option bedeutet, dass find die passenden Dateien direkt löscht. Dies ist die beste Übereinstimmung mit der eigentlichen Frage von OP.
Mit " -type f
means find" werden nur Dateien verarbeitet.
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
Mit der Option -exec
find kann ein beliebiger Befehl pro Datei ausgeführt werden. Die erste Variante führt den Befehl einmal pro Datei aus, und die zweite Variante führt so wenig Befehle wie möglich aus, indem sie {}
durch so viele Parameter wie möglich ersetzt.
find . -name \*.swp -type f -print0 | xargs -0 rm -f
Das Weiterleiten der Ausgabe an xargs
wird für komplexere Dateibefehle verwendet, als dies mit möglich ist -exec
. Die Option -print0
sagt find
Einstimmungen mit ASCII NULL anstelle eines Newline zu trennen, und -0
sagt xargs
NULL getrennten Eingang zu erwarten. Dies macht das Pipe-Konstrukt sicher für Dateinamen, die Leerzeichen enthalten.
Sehen Sie man find
für weitere Informationen und Beispiele.
Für die Suche in meinem Home-Verzeichnis (und unter Verwendung der GNU-Befehle 'find' und 'xargs') würde ich Folgendes verwenden:
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
Die Verwendung von ' -print0
' und ' -0
' bedeutet, dass die Namen durch ASCII-NUL '\ 0' -Zeichen begrenzt werden. Dabei werden Dateipfade mit Leerzeichen usw. in den Namen behandelt. Wenn Sie der Meinung sind, dass sich in Ihrem Verzeichnis Verzeichnisse (oder Gerätedateien oder FIFOs oder andere Nicht-Dateien) befinden, die mit ".swp" enden, können Sie die -type f
Option "Suchen" hinzufügen . Wenn Sie nur Verzeichnisse haben, können diese mit dem obigen Befehl nicht entfernt werden.