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.