linux removendo arquivos temporários

1

Eu estava tentando remover arquivos terminando com um til usando o comando rm *.*~, mas isso não remove arquivos que começam com um . e terminar com ~, por exemplo. .somefile~. Eu também tentei rm *~, mas isso também não funciona para arquivos que começam com .. Alguém pode explicar por que isso é?

Eu quero remover todos os arquivos terminados em ~, independentemente de começarem com um . ou não (eu estava tentando fazer isso sem encontrar / exec). Isso é possível?

Jeff Storey
fonte

Respostas:

5

Arquivos começando com um . estão ocultos por padrão e não aparecem em um ls. Como você pode não tê-los visto, os shells geralmente não correspondem a esses arquivos, a menos que você os inclua manualmente. Você pode fazer isso da seguinte maneira:

rm *~ .*~
cpast
fonte
1

Embora a resposta acima seja provavelmente mais segura (por causa de menos efeitos colaterais), por completude ....

O shell bash (que é o que a maioria das pessoas executa no Linux) tem um sinalizador para dizer se deve ou não incluir dotfiles em globs. Você define isso com shopt -s dotglob. A sequência abaixo é antes de definir o sinalizador, depois de definir. Observe que o rm irá removê-lo assim que o dotglob estiver definido.

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

Um pouco menos seguro; em teoria, você pode esquecer se isso está ou não definido. Mas se você quiser definir isso em todos os lugares, e você é consistente sobre isso, pode ser o que você quer.

Rich Homolka
fonte