Я хотел бы рекурсивно искать папку, извлекать RAR-файл и удалять .nfo, .svf и RAR-файлы (* .rar и * .r1, * .r2 и т. д.).
Я нашел команду для рекурсивного извлечения, но не для удаления:
find ./ -name '*.rar' -exec unrar e {} \;
Отбросить другой предикат -exec (с rm внутри этого), который будет запускаться только в том случае, если первый преуспеет:
find . -name '*.rar' -exec unrar e {} \; -exec rm {} \;
-exec rm {} \; будет запущен только для удаления .rar, если успешное выполнение unrar (-exec unrar e {} \;), т.е. unrar, возвращается с статусом выхода 0.
Вы также можете сделать это, используя bash, используя опцию globstar для рекурсивного соответствия шаблону glob (*.rar) и rm каждого файла, если unrar -из успешно:
shopt -s globstar
for f in **/*.rar; do
unrar e "$f" && rm "$f"
done
Отбросить другой предикат -exec (с rm внутри этого), который будет запускаться только в том случае, если первый преуспеет:
find . -name '*.rar' -exec unrar e {} \; -exec rm {} \;
-exec rm {} \; будет запущен только для удаления .rar, если успешное выполнение unrar (-exec unrar e {} \;), т.е. unrar, возвращается с статусом выхода 0.
Вы также можете сделать это, используя bash, используя опцию globstar для рекурсивного соответствия шаблону glob (*.rar) и rm каждого файла, если unrar -из успешно:
shopt -s globstar
for f in **/*.rar; do
unrar e "$f" && rm "$f"
done
Отбросить другой предикат -exec (с rm внутри этого), который будет запускаться только в том случае, если первый преуспеет:
find . -name '*.rar' -exec unrar e {} \; -exec rm {} \;
-exec rm {} \; будет запущен только для удаления .rar, если успешное выполнение unrar (-exec unrar e {} \;), т.е. unrar, возвращается с статусом выхода 0.
Вы также можете сделать это, используя bash, используя опцию globstar для рекурсивного соответствия шаблону glob (*.rar) и rm каждого файла, если unrar -из успешно:
shopt -s globstar
for f in **/*.rar; do
unrar e "$f" && rm "$f"
done