remove arquivos de log

1

Eu tenho uma pasta que, por sua vez, contém várias subpastas. Todas essas subpastas têm uma pasta de log. Como limpar todos os arquivos de log de todas as pastas de log nesses subdiretórios usando um único comando do diretório pai?

Por exemplo,

Folder/
  Sub1/
    Log/
      Log1.txt
      Log2.txt
  Sub2/
    Log/
      Log10.txt
      Log11.txt

Como limpar esses arquivos de log sozinho? Observe que as subpastas sub1 e sub2 podem conter outras pastas, bem como alguns outros arquivos que não devem ser excluídos. O sistema é red hat Linux.

    
por Ra-V 14.04.2016 / 12:34

3 respostas

2

Você pode usar bash globbing para combinar várias pastas. Algo como:

rm ./Folder/*/Log/*

Ou talvez ainda melhor:

rm ./Folder/Sub*/Log/*

O segundo removerá todos os arquivos dentro do diretório Log dentro de um diretório que começa com Sub . Você pode adicionar -r (recursivo) ou -f (força) ao seu comando rm , se necessário.

Para mais informações sobre bash globbing, você pode ver outra das minhas respostas: É possível especificar um caminho no qual um nome de diretório é variável?

Embora isso responda diretamente à sua pergunta, convém usar o logrotate para gerenciar arquivos de log antigos: link

    
por 14.04.2016 / 12:56
0

O comando Localizar é muito poderoso, no qual você pode executar ações em objetos financiados.

 find . -type f -name "*.txt" -exec rm -f {} \;

Como você pode ver, este comando encontra arquivos * .txt e executa rm nele.

Para excluir arquivos apenas nas pastas de registro:

find . -type d -name "Log" -exec sh -c 'find "$(realpath $1)" -type f -delete' _ {} \;

Este comando localiza todas as pastas de Log e procura por arquivos nelas.

    
por 14.02.2017 / 23:01
-1

Para este caso, parece que podemos usar find com o parâmetro type.

    find {piyush,jain} -type f
piyush/jain/logs/1.log
piyush/jain/logs/2.log
piyush/jain/logs/3.log
jain/piyush/logs/4.log
jain/piyush/logs/5.log
jain/piyush/logs/6.log

find {piyush,jain} -type f  | xargs rm -f

find {piyush,jain} -type f
    
por 14.04.2016 / 13:00