Como arquivos 'rm' no diretório e diretórios atuais dentro do diretório atual

0

Eu gostaria de rm de todos os arquivos que terminam em ~ no meu diretório atual e em todos os diretórios dentro do diretório atual. Fiquei com a impressão de que a bandeira -r ou -R faria isso; no entanto, os seguintes comandos apenas removem arquivos que terminam em ~ no meu diretório atual e não nos outros diretórios dentro do meu diretório atual:

rm *~ -r
rm *~ -R

É possível obter o rm para executar como eu quero, conforme explicado aqui e, em caso afirmativo, como?

Eu uso o tcsh.

    
por Joshua 05.05.2014 / 21:51

2 respostas

4

A abordagem compatível é informar find para construir uma lista de arquivos e passá-la para rm . Usando o newish (adicionado ao POSIX por volta de 2005, se a memória funcionar) -exec ... {} + syntax tornará isso eficiente e seguro:

find . -name '*~' -exec rm -f {} +

Para o mais novo (4.x) bash, ou para a maioria dos lançamentos do zsh, você também pode dizer ao shell para fazer globalização recursiva:

shopt -s globstar # enable recursive globbing with ** on bash
rm -f **/*~
    
por 05.05.2014 / 21:52
0

Você pode remover todos os arquivos de todos os diretórios usando o comando abaixo:

find -name "*~" -print0 | xargs -0 rm

onde find -name "* ~" encontra todos os arquivos que estão com o nome "~" na última posição, -print0 lista todos os arquivos em uma linha , xargs -0 rm , que lista todos os arquivos na entrada e funciona como rm. E se você quiser mesmo excluir todos os diretórios que estão tendo nome com "~" no final, você também pode fazer isso substituindo rm por rm -rf.

    
por 06.05.2014 / 13:48

Tags