apagar arquivosw com apenas uma linha

1. apagar arquivosw com apenas uma linha

Wanderson G. Wanzeller
wander_gw

(usa KUbuntu)

Enviado em 22/09/2023 - 13:53h

Caros,
Tenho um conjunto grande de arquivos e gostaria de fazer um filtro: se o arquivo tiver apenas 1 linha escrita deve ser apagado

Usando o comando wc consigo a informação do números de linhas, mas são mais de 1000 arquivos! Tem como fazer isso automaticamente?




  


2. Re: apagar arquivosw com apenas uma linha

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 22/09/2023 - 15:33h

v aí se te ajuda
for x in `ls`;do [[ $(wc -l $x | awk '{print $1}') == 1 ]] && rm $x;done 


edit: o comando percorre todos os arquivos do diretório, os que ele encontrar só com 1 linha ele deleta !!!

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




3. Re: apagar arquivosw com apenas uma linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/09/2023 - 20:38h

Boa noite Wander!
Segue sugestão:
wc -l fort.*|awk '$1==1{system("rm "$2)}' 

Caso queira evitar o "pipe", o que é recomendado...
Faça:
wc -l fort.* >> arquivos.txt
awk '$1==1{system("rm "$2)}' arquivos.txt

É isso....

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



4. Re: apagar arquivosw com apenas uma linha

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 22/09/2023 - 20:46h


msoliver escreveu:
Boa noite Wander!
Segue sugestão:
...


daqui uns dias a gente vai postar códigos e vc vai reescreve-los com apenas 2 ou 3 caracteres !!! kkkkkkkkkkkkkkkkkkk

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




5. Re: apagar arquivosw com apenas uma linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/09/2023 - 21:14h


Mauriciodez escreveu:


msoliver escreveu:
Boa noite Wander!
Segue sugestão:
...


daqui uns dias a gente vai postar códigos e vc vai reescreve-los com apenas 2 ou 3 caracteres !!! kkkkkkkkkkkkkkkkkkk

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------


Rsrsrsrsrsrsrs...
Nem tanto assim Mauricio.
Só dei uma otimizada......

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



6. Re: apagar arquivosw com apenas uma linha

Wanderson G. Wanzeller
wander_gw

(usa KUbuntu)

Enviado em 27/09/2023 - 16:33h


msoliver escreveu:

Boa noite Wander!
Segue sugestão:
wc -l fort.*|awk '$1==1{system("rm "$2)}' 

Caso queira evitar o "pipe", o que é recomendado...
Faça:
wc -l fort.* >> arquivos.txt
awk '$1==1{system("rm "$2)}' arquivos.txt

É isso....

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



Obrigado, funcionou!!!



7. Re: apagar arquivosw com apenas uma linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/09/2023 - 17:45h

Por nada Wander.
Se não for pedir muito...
Marque como Melhor Resposta, aquela que mais te ajudou...

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



8. apagar arquivosw com apenas uma linha

Olavo Borges De Sá Loureiro
GriffoDeRuppell

(usa Linux From Scratch)

Enviado em 27/09/2023 - 18:57h

tambem conheço essa forma!

substitua o caminho do diretorio para o path completo a partir de onde quer "apagar"!

find /caminho/do/diretorio -type f -exec awk 'NF==1 {print "rm", $0}' {} \; | sh


9. Re: apagar arquivosw com apenas uma linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/09/2023 - 19:58h

GriffoDeRuppell escreveu:

tambem conheço essa forma!

substitua o caminho do diretorio para o path completo a partir de onde quer "apagar"!

find /caminho/do/diretorio -type f -exec awk 'NF==1 {print "rm", $0}' {} \; | sh

Boa noite Olavo.
O seu comando faz o seguinte:
1 - Lista todos arquivos comuns de "/caminho/do/diretorio" e subdiretórios.
2 - Todos registros desses arquivos que tem "um campo", é executado o rm "conteúdo da linha" . . .
$0 é o registro.
FILENAME é o arquivo.

Para "pegar" o nº de linhas com o awk, faça:
awk 'END{print NR}' arquivo
Limitar a recursividade do find:
-maxdepth 1

find /home/adminq/ -maxdepth 1  -type f -iname "*txt" -exec awk 'END{if(NR<=1) system("rm " FILENAME)}' {} \; 


#FICA_A_DICA

Att.: Marcelo Oliver


10. Re: apagar arquivosw com apenas uma linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/09/2023 - 20:05h


wander_gw escreveu:


msoliver escreveu:

Boa noite Wander!
Segue sugestão:
wc -l fort.*|awk '$1==1{system("rm "$2)}' 

Caso queira evitar o "pipe", o que é recomendado...
Faça:
wc -l fort.* >> arquivos.txt
awk '$1==1{system("rm "$2)}' arquivos.txt

É isso....

EDITADO em 28-09-2023.
Correção:
awk '$1<=1{system("rm "$2)}' arquivos.txt
Obs:
printf "Zero_linha" > zerolinha.txt
wc -l zerolinha.txt
0 zerolinha.txt

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



Obrigado, funcionou!!!




______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



11. Re: apagar arquivosw com apenas uma linha

Olavo Borges De Sá Loureiro
GriffoDeRuppell

(usa Linux From Scratch)

Enviado em 28/09/2023 - 20:52h


msoliver escreveu:

GriffoDeRuppell escreveu:

tambem conheço essa forma!

substitua o caminho do diretorio para o path completo a partir de onde quer "apagar"!

find /caminho/do/diretorio -type f -exec awk 'NF==1 {print "rm", $0}' {} \; | sh

Boa noite Olavo.
O seu comando faz o seguinte:
1 - Lista todos arquivos comuns de "/caminho/do/diretorio" e subdiretórios.
2 - Todas registros desses arquivos que tem "um campo", é executado o rm "conteúdo da linha" . . .
$0 é o registro.
FILENAME é o arquivo.

Para "pegar" o nº de linhas com o awk, faça:
awk 'END{print NR}' arquivo
Limitar a recursividade do find:
-maxdepth 1

find /home/adminq/ -maxdepth 1 -type f -iname "*txt" -exec awk 'END{if(NR<=1) system("rm " FILENAME)}' {} \;

#FICA_A_DICA

Att.: Marcelo Oliver



opa,Obrigado Marcelo ^ Show de Bola!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts