Colete arquivos usando find

5

Atualmente tenho este script:

find . -name '*.log' -print0 | xargs -0 tar zcf $file

Para coletar todos os arquivos "* .log". Eu gostaria de modificá-lo para incluir também todos os arquivos ".txt", mas eu não sei como, isso deve ser bastante simples, certo?

    
por OscarRyz 04.01.2011 / 22:31

2 respostas

4

Se você usar o -regex flag em vez de -name , poderá especificar o nome como uma expressão regular:

find . -regex '.*\.\(log\|txt\)' -print0 | xargs -0 tar zcf $file
    
por 04.01.2011 / 22:39
9

Existem várias maneiras de alterar seu comando de localização. Aqui está um:

find . \( -name '*.log' -o -name '*.txt' \) -print0

O -o é um operador OR, portanto, se a primeira condição falhar, a segunda condição será verificada. Se você tiver o GNU find, você também pode usar o apropriadamente chamado -or . Observe que a segunda expressão não é avaliada se a primeira for válida.

    
por 04.01.2011 / 22:41