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
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?
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.