Como salvar o status de todos os arquivos encontrados em uma pesquisa?

0

Eu tive um cron que remove todos os arquivos com um padrão específico de temp.

find /tmp/* -type f -iname magick-* -exec rm {} \;

Agora, desejo registrar a estatística de todos os arquivos antes de excluí-los para análise futura.

Eu tentei fazer o seguinte, mas não funciona se a saída da pesquisa for maior que uma.

find /tmp/* -type f -iname magick-* -exec stat {} \;

Como fazer isso funcionar para vários resultados, também como registrá-lo em um arquivo?

    
por dragosrsupercool 10.12.2014 / 11:29

2 respostas

1

Você não mostra o que acontece ao tentar. Apenas dizer "não funciona" NUNCA está correto.

Suspeito que seus problemas possam estar relacionados a um ou mais dos seguintes itens:

  • Cite o padrão ou escape do * . Se você não tiver, e você tiver um ou mais arquivos em seu diretório atual que correspondam a esse padrão, o padrão será expandido para a lista de arquivos correspondentes e substituído em seu comando, que é não você quer.
  • Não use /tmp/* para localizar, basta usar /tmp , find é perfeitamente capaz de recorrer ao diretório fornecido por si mesmo; Em seguida, ele também encontrará todos os arquivos cujo nome comece com um ponto.

Além disso, se o rm funcionasse, o stat também deveria funcionar.

Note também que você pode combinar os dois:

find /tmp -type f -iname 'magick-*' -exec stat {} \; -exec rm {} \;

Primeiro, o stat será executado e, se o stat não falhar, rm será executado.

Você pode salvar a saída simplesmente redirecionando a saída de find para qualquer arquivo que você queira.

    
por 10.12.2014 / 11:50
0

Você pode usar tudo de uma vez. Use também + , que será mais rápido, já que executa toda a ação de uma só vez.

find /tmp -type f -iname 'magick-*'-exec stat {} + -exec sh -c 'rm -rf  $@' _ {} + | tee -a log_to_file
    
por 10.12.2014 / 11:59

Tags