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