Excluir arquivos correspondentes em todos os subdiretórios


77

Como posso remover todos os arquivos .swp em todos os meus subdiretórios no Linux?


3
Não se esqueça de ver programas como o lixo-cli para que você possa cancelar a exclusão, em vez de usar o rm. code.google.com/p/trash-cli (Você acabou de substituir 'rm' por 'lixo' em todas as respostas abaixo).

Respostas:


137

Remova todos os arquivos * .swp abaixo do diretório atual, use o findcomando de uma das seguintes formas:

  • find . -name \*.swp -type f -delete

    A -deleteopção significa que find excluirá diretamente os arquivos correspondentes. Essa é a melhor correspondência para a pergunta real do OP.

    Usar -type fmeios find processará apenas arquivos.

  • find . -name \*.swp -type f -exec rm -f {} \;
    find . -name \*.swp -type f -exec rm -f {} +

    A opção -execpermite localizar para executar um comando arbitrário por arquivo. A primeira variante executará o comando uma vez por arquivo e a segunda executará o menor número possível de comandos, substituindo o {}maior número possível de parâmetros.

  • find . -name \*.swp -type f -print0 | xargs -0 rm -f

    O canal da saída xargsé usado para formar comandos por arquivo mais complexos do que é possível com -exec. A opção -print0diz findpara separar correspondências com ASCII NULL em vez de uma nova linha e -0diz xargspara esperar uma entrada separada por NULL. Isso torna a construção do pipe segura para nomes de arquivos que contêm espaço em branco.

Veja man findpara mais detalhes e exemplos.


16

find . -name '*.swp' -delete

Depois de encontrar find delete, remova qualquer risco de espaço incorporado no nome do arquivo, ... Para segurança extra, considere adicionar -type fapenas arquivos.


4
find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;

bash 4.0

shopt -s globstar
rm -f /path/**/*.swp

2

Para pesquisar no meu diretório pessoal (e usando o GNU 'find' e 'xargs'), eu usaria:

find $HOME -name '*.swp' -print0 | xargs -0 rm -f

O uso de ' -print0' e ' -0' significa que os nomes serão delimitados por caracteres ASCII NUL '\ 0', e isso manipulará os caminhos de arquivos com espaços em branco etc. nos nomes. Se você acha que pode ter diretórios (ou arquivos de dispositivo, ou FIFOs ou outros que não sejam arquivos) no diretório que termina com '.swp', você pode adicionar a -type fopção ' ' para 'localizar'. Se você tiver apenas diretórios, o comando acima falhará ao removê-los ruidosamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.