Vergessen Sie nicht, sich Programme wie trash-cli anzuschauen, damit Sie das Löschen rückgängig machen können, anstatt rm zu verwenden. code.google.com/p/trash-cli (In allen folgenden Antworten ersetzen Sie einfach "rm" durch "trash".)
Antworten:
137
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.
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.
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.
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
sagtfind
Einstimmungen mit ASCII NULL anstelle eines Newline zu trennen, und-0
sagtxargs
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.quelle
find . -name '*.swp' -delete
Wenn find den Löschvorgang selbst ausführt, wird das Risiko von in Dateinamen eingebettetem Speicherplatz beseitigt
-type f
.quelle
Bash 4.0
quelle
Für die Suche in meinem Home-Verzeichnis (und unter Verwendung der GNU-Befehle 'find' und 'xargs') würde ich Folgendes verwenden:
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.quelle