[Dica do comando find]

Eu uso bastante o comando find para procurar por arquivos, sejá em scripts bash seja na linha de comando.

Um truque interessante é excluir alguns arquivos da lista, por exemplo hoje eu precisei procurar por todos os arquivos “.md” mas queria excluir todos os iniciados com underline e também o arquivo “default.md”.

Para fazer isso usei o parametro -not antes do parametro -name como no exemplo abaixo.

find  . \
    -type f \
    -name '*.md' \
    -not -name '_*md' \
    -not -name 'default.md'

Excluindo arquivos

No meu caso eu queria excluir os arquivos mantendo os arquivos todo o resto da estrutura então usei a linha de comando abaixo, com a unica substituição do comando echo por rm. Claro que eu deixei o comando echo no exemplo para deixar mais seguro para quem quer só copiar o comando e testar.

find  . \
    -type f \
    -name '*.md' \
    -not -name '_*md' \
    -not -name 'default.md' \
    -exec echo {} \;

Nesse exemplo o parâmetro -type f indica para o find que só queremos arquiovs, não diretórios. Em seguida o parâmetro -name ‘*.md’ pede para buscar todos os arquivos .md. E os dois comandos -not -name excluem os arquivos que não queremos.

Finalmente o parametro -exec echo {} ; roda o comando echo e substitui as chaves {} pelo nome do arquivo encontrado.

Cesar Gimenes