Ola pessoal, estou com uma dúvida que achei que fosse simples de solucionar dando um google mas acho que não é tão simples assim.
Eu estou com um problema simples, preciso apagar diversos arquivos do tipo *.txt porém eles estão dentro de dezenas (ou centenas) de subpastas, ou seja, preciso fazer isso de maneira recursiva.
Por exemplo, temos a pasta raiz e as suas subpastas: raiz/sub1/sub2/sub3/…/subN
Dentro da raiz e das subpastas tenho centenas de arquivos .txt que preciso apagar, tentei usar o comando “rm” passando o parametro de recursividade “-r” ou “-R” e colocando o tipo ".txt", ficando assim: rm -r raiz/*.txt
Somente dentro da pasta raiz os arquivos .txt foram apagados, todas as subpastas continuaram normais.
Alguém tem alguma dica?
2 curtidas
Usa o find:
find raiz -type f -name '*.txt' -delete
3 curtidas
Explicação:
-
raiz é pasta onde estão os arquivos que você quer remover
-
-type f diz que você quer apenas arquivo (f vem de file)
-
-name diz que você só quer resultados que contenham o padrão que vem em seguida
-
'.txt’ é um padrão que significa comece com qualquer coisa () e termine com .txt
-
-delete diz pro find apagar os arquivos que ele encontrar
Dica: se quiser testar antes,troque -delete por -print assim ao invés de apagar ele mostra os arquivos
Se você quiser testar antes você pode trocar -delete
3 curtidas
Muito obrigado @Natanael.755 funcionou perfeitamente !
Eu não conheço muito bem o comando find, pelo que vi aqui da pra fazer muita coisa com ele. achava que era só o básico de buscar alguma coisa mas parece que não.
Vlw

1 curtida