linux removendo arquivos temporários

linux removendo arquivos temporários

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

Quero remover todos os arquivos que terminam com ~, independentemente de começarem com a .ou não (eu estava tentando fazer isso sem find/exec). Isso é possível?

Responder1

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

rm *~ .*~

Responder2

Embora a resposta acima seja provavelmente mais segura (devido a menos efeitos colaterais), para completar....

O shell bash (que é o que a maioria das pessoas executa no Linux) tem um sinalizador para indicar se deve ou não incluir dotfiles em globs. Você configura com shopt -s dotglob. A sequência abaixo é antes de definir o sinalizador e depois da configuração. Observe que o rm irá removê-lo assim que o dotglob for 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á definido ou não. Mas se você quiser definir isso em todos os lugares e for consistente, pode ser o que você deseja.

informação relacionada