Localize e exclua todos os arquivos sem extensões em uma pasta e suas subpastas


16

Eu tenho uma pasta sem cerca de 500 subdiretórios. Há muito lixo nele e eu quero limpá-lo.

Eu já apaguei certos tipos de arquivos que não quero, como imagens, com este comando:

find . -mindepth 1 -iname "*.jpg" -type f -delete

No entanto, agora eu quero excluir todos os arquivos sem extensão. Arquivos como "Lista de compras" em vez de "Lista de compras.txt"

Eu tentei o seguinte comando, mas não funcionou:

find . -mindepth 1 ! -iname "*.*" -type f -delete

Respostas:


20

Tente o seguinte:

find . -type f  ! -name "*.*"  -delete

No entanto, observe que o acima não excluirá arquivos cujo nome termina em ., por exemplo foo.. Para excluí-los também, use isso:

find . -type f  ! -name "*.?*" -delete

O segundo comando foi minha próxima pergunta. Muito obrigado! Eu também poderia digitar find . -type f ! -name "*?.*" -deletepara remover arquivos como ".trash" ou o que não fosse necessário. Não se preocupe - não era meu diretório pessoal, então não perdi nenhum arquivo de configuração.
Etsnyman # 15/14

5
@etsnyman Melhor testar primeiro o comando sem a -deleteopção!
Radu Rădeanu 15/05

@etsnyman não é bem assim: para remover arquivos que começam com um ponto, use find . -type f -name ".*" -deleteo do seu último comentário e também excluirá os arquivos sem extensões. E o que Radu disse! Teste primeiro!
Terdon # 15/14

@ RaduRădeanu eu realmente testado pela primeira vez em um diretório fictício com arquivos vazios ...
etsnyman

@terdon O que o ponto de interrogação significa no seu segundo comando?
Avinash Raj

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.