Linux: Temporäre Dateien löschen

Linux: Temporäre Dateien löschen

Ich habe versucht, Dateien, die mit einer Tilde enden, mit dem Befehl zu entfernen rm *.*~, aber das entfernt keine Dateien, die mit einem beginnen .und mit enden ~, z. B. .somefile~. Ich habe auch versucht rm *~, aber das funktioniert auch nicht für Dateien, die mit einem beginnen .. Kann jemand erklären, warum das so ist?

Ich möchte alle Dateien entfernen, die mit enden ~, unabhängig davon, ob sie mit einem beginnen .oder nicht (ich habe versucht, das ohne find/exec zu tun). Ist das möglich?

Antwort1

Dateien, die mit einem beginnen, .sind standardmäßig ausgeblendet und werden in einem normalen nicht angezeigt ls. Da Sie sie möglicherweise nicht gesehen haben, werden Shells diese Dateien im Allgemeinen nicht finden, es sei denn, Sie schließen sie manuell ein. Sie können dies wie folgt tun:

rm *~ .*~

Antwort2

Obwohl die obige Antwort wahrscheinlich sicherer ist (aufgrund geringerer Nebenwirkungen), der Vollständigkeit halber …

Die Bash-Shell (die die meisten Leute unter Linux verwenden) hat ein Flag, das angibt, ob Dotfiles in Globs aufgenommen werden sollen oder nicht. Sie setzen es mit shopt -s dotglob. Die folgende Sequenz ist vor dem Setzen des Flags und dann nach dem Setzen. Beachten Sie, dass rm es entfernt, sobald dotglob gesetzt ist.

$ touch .somefile~
$ rm *~
rm: cannot remove `*~': No such file or directory
$ ls -A
.somefile~
$ shopt -s dotglob
$ rm *~
$ ls -A
$

Etwas weniger sicher; theoretisch können Sie vergessen, ob dies festgelegt ist oder nicht. Aber wenn Sie dies überall festlegen möchten und dabei konsequent sind, ist es möglicherweise das, was Sie möchten.

verwandte Informationen