linux removendo arquivos temporários

1

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

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

    
por Jeff Storey 03.01.2013 / 02:55

2 respostas

5

Os arquivos que começam com . estão ocultos por padrão e não aparecem em ls normal. 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 *~ .*~
    
por 03.01.2013 / 03:00
1

Embora a resposta acima seja provavelmente mais segura (devido ao menor número de efeitos colaterais), por completo ...

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 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 está ou não definido. Mas se você quiser definir isso em todos os lugares, e você for consistente com isso, pode ser o que você quer.

    
por 22.03.2013 / 23:35