Como listar todos os arquivos * .html maiores que {size} excluindo algumas {* partes *}

0

Eu preciso de um comando para listar arquivos. Mas eu tenho três problemas:

  1. Eu quero arquivos que terminem com .HTML e .HTM
  2. Se algum arquivo tiver partes como: google docs ou form no nome, quero excluí-lo.
  3. Eu quero apenas arquivos maiores que 1kb

Neste momento recebi este comando:

ls *.html *.htm | grep -v 'backup\|form\|docs\|google'

Está funcionando muito bem. Está excluindo palavras com: backup \ | form \ | docs \ | google - mas eu quero excluir arquivos MENORES de "1kb".

Todos os scripts que eu encontrei para mostrar arquivos "maiores" que {size} estão usando "find". Alguém tem alguma ideia?

    
por Carlos Eduardo Baldocchi 10.11.2015 / 13:12

2 respostas

1

Usando o GNU find:

find . -size +1k -type f -iregex '.*\.html?$' \
    -not -iregex '.*\(backup\|form\|docs\|google\).*'

Isso localiza todos os arquivos acima de 1k com nomes correspondentes ao regex .*\.html?$ , mas não usando o regex .*\(backup\|form\|docs\|google\).*

Se você quiser arquivos apenas no diretório atual e não em subdiretórios, use a opção -maxdepth 1 .

find . -maxdepth 1 -size +1k -type f -iregex '.*\.html?$' \
    -not -iregex '.*\(backup\|form\|docs\|google\).*'

Você pode fazer o que precisar com essa lista de arquivos, por exemplo, adicionando uma opção -exec ... , ou -print0 e pipe a xargs -0r .

    
por 11.11.2015 / 04:37
0

find . -size +1k | grep '.htm' | grep -v 'backup\|form\|docs\|google'

    
por 10.11.2015 / 14:04

Tags