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 findBefehl in einer der folgenden Formen:
find . -name \*.swp -type f -delete
Die -deleteOption bedeutet, dass find die passenden Dateien direkt löscht. Dies ist die beste Übereinstimmung mit der eigentlichen Frage von OP.
Mit " -type fmeans find" werden nur Dateien verarbeitet.
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
Mit der Option -execfind 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 xargswird für komplexere Dateibefehle verwendet, als dies mit möglich ist -exec. Die Option -print0sagt findEinstimmungen mit ASCII NULL anstelle eines Newline zu trennen, und -0sagt xargsNULL getrennten Eingang zu erwarten. Dies macht das Pipe-Konstrukt sicher für Dateinamen, die Leerzeichen enthalten.
Sehen Sie man findfü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 fOption "Suchen" hinzufügen . Wenn Sie nur Verzeichnisse haben, können diese mit dem obigen Befehl nicht entfernt werden.