ls e encontrar o comando excluindo um determinado diretório

2

Eu quero fazer isso:

ls -altrhS 'find / -type d \( ! -name tmp -prune \) -size +10000k 2> /dev/null -print' | egrep -v 'ibd|MYD|MYI'  

Portanto, quero listar, nesse formato, arquivos de um tamanho específico, excluindo o diretório tmp. Tudo o que eu li diz que deve fazê-lo, mas não funciona, eu continuo recebendo o material do diretório temp também.

    
por Kirs Kringle 04.09.2014 / 08:38

1 resposta

2

Tente isto:

find / -not -path "*/tmp/*" -size +10000k -ls 2> /dev/null | \
sort -n -k7 | egrep -v 'ibd|MYD|MYI'

Explicação:

  • find / -not -path "*/tmp/*" -size +10000k -ls : encontre everthing cujo caminho não comece com /tmp/ com o tamanho maior que 10000k e imprima a saída no formato find do ls -dils .
  • sort -n -k7 : Como sua declaração na questão ls -altrhS , eu suponho que você queira que a saída seja ordenada pelo tamanho do arquivo ascendente. No ls -dils output de find , o sétimo campo é o tamanho do arquivo
  • egrep -v 'ibd|MYD|MYI' e sua própria parte egrep para filtrar essas sequências

Editar:

Se você quiser que o formato de tamanho de arquivo legível por humanos de ls use este comando:

find / -type f -not -path "*/tmp/*" -size +10000k -printf "%s %p\n" 2> /dev/null | sort -n -k1 | cut -d' ' -f2- | xargs -L 1 ls -lh
    
por 04.09.2014 / 09:07

Tags