O Linux localiza arquivos em subdiretórios por extensão (.txz) e os move para o diretório especificado usando expressões regulares [duplicado]

0

Eu espelhei um diretório de um servidor com um grande número de subdiretórios, cada um contendo um pacote .txz e os arquivos usuais .txt e descriptor. O que eu gostaria de fazer é o seguinte:

Localize / localize todos os arquivos .txz em todos os subdiretórios e mova-os todos para uma pasta específica; usando expressões regulares. Qual seria a expressão regular para usar, em bash no slackware linux? Obrigado

    
por DMZ 15.10.2014 / 10:51

1 resposta

1

Para responder à sua pergunta como você pediu:

find -regex '.*\.txz' -type f -exec mv {} '/destination/path' \;

Note, entretanto, que o uso de regex é desnecessário para sua tarefa. O comando abaixo teria funcionado bem:

find -name '*.txz' -type f -exec mv {} '/destination/path' \;

Você também pode fazer isso sem usar nada além de bash e mv. Isso usa a pesquisa de padrões e a opção globstar do shell.

shopt -s globstar
for file in ./**/*.txz; do
    [[ -f $file ]] && mv "$file" '/destination/path'
done
shopt -u globstar
    
por 18.10.2014 / 13:51