Comando Find, recursos avançados

Exemplos


  • Encontra todos os arquivos (-type f) do diretório data,
    gravando uma lista em (-fls /logs/removidos.txt), e depois
    removendo todos os arquivos encontrados (xargs -0 rm -v)
    $ find /data -atime +5 -type f -fls /logs/removidos.txt -print0 | xargs -0 rm -v
    a opção -0 em (xargs -0 rm -v) é para que os espaços sejam respeitados pelo shell;


  • Uma outra forma de fazer isso é usando a opção -I do xargs. Algo assim:

    $ find /data -mtime +5 -type f | xargs -I{} bash -c "rm -fv '{}'; ls -l '{}'" > $LOGS/removidos

    Neste caso, a opção -I do xargs joga para o token definido ({}) os dados
    recebidos pela entrada padrão (|). Como o xargs atua sobre uma instrução
    somente, usei o bash -c, pois por intermédio dele consigo executar o rm e o
    ls -l.

    Repare que as chaves estão entre apóstrofes e, assim sendo, espaços em
    nomes de arquivos estão devidamente protegidos da interpretação do shell.

  • Copia os arquivos do twiki, exceto os '.svn', os '.log', os ',v' e os '.lease', mantendo a estrutura original (--parents), o modo, o propríetário e o timestamp (-p); exibindo na tela as ações executadas.
    find twiki/ ! \( -iwholename '*.svn*' -o -name '*.log' -o -iwholename '*,v' -o -iwholename '*.lease' \) -exec cp --parents -pv {} ~/dirti/ \;

Comentários