Busca recursivamente por arquivos RAR e extrai-os, uma vez extraídos, remova-os

5

Eu gostaria de pesquisar recursivamente uma pasta, extrair o arquivo RAR e remover .nfo, .svf e os arquivos RAR (* .rar e * .r1, * .r2, etc).

Eu encontrei um comando para extrair recursivamente, mas não para remover:

find ./ -name '*.rar' -exec unrar e {} \;
    
por Adam 10.04.2017 / 16:19

1 resposta

5

Adquira outro predicado -exec (com rm dentro disso), que só seria executado se o primeiro for bem-sucedido:

find . -name '*.rar' -exec unrar e {} \; -exec rm {} \;

-exec rm {} \; só será executado para remover o arquivo .rar se a unrar -ing for bem-sucedida ( -exec unrar e {} \; ), ou seja, unrar retornará com o status de saída 0.

Você também pode fazer isso usando bash , usando a opção globstar para corresponder recursivamente ao padrão glob ( *.rar ) e rm de cada arquivo se unrar -ing for bem-sucedido:

shopt -s globstar
for f in **/*.rar; do
    unrar e "$f" && rm "$f"
done
    
por heemayl 10.04.2017 / 16:23