Я пишу это с головы до головы, так что это непроверенный код, но он должен вывести вас на правильный путь. Он в основном идет по дереву, на которое вы указываете, в поисках файлов .rar. Найдя его, он распакует его на месте и удалит исходный архив, если unrar не вернет ненулевое значение. При попадании в папку, функция просто вызывает себя, вызывая ее рекурсивность.
#!/bin/bash
[[ ! -d "$1" ]] && echo "Please point me at a directory!" && exit 1
function recursively_extract_all_rars_in() {
    local x=`pwd` f
    cd "$1"
    for f in (*); do
        [[ -d "$f" ]] && recursively_extract_all_rars_in "$f"
        [[ -f "$f" ]] && [[ "$f" =~ "*.rar" ]] && unrar e "$f" && rm ${f%%.*}.r??
    done
    cd "$x"
}
recursively_extract_all_rars_in "$1"
Имя функции полностью произвольно. Мне нравится, когда они читают как настоящий английский, когда приводятся их аргументы. [[ -d /path ]] возвращает true, если путь существует и является каталогом. -f делает соответствующие файлы. [[ "string" =~ "pattern"]] - это bashism, который позволяет сопоставлять шаблоны в строках. Это работает в основном так же, как шаблоны глобуса.
Строка local x=pwd f может быть загадочной, но она просто определяет две локальные переменные: одну с именем x, для хранения pwd , и одну с именем f, неинициализированную (она инициализируется в цикле for ниже, я просто объявляю ее здесь, так что местный).
Хранение pwd и возврат к нему, если ваша функция использует cd - это хорошо (tm).
Обратите внимание, что использование вывода ls программно - это, как правило, Bad Mojo, и вам следует избегать его, как вредителя, в пользу find . Если какое-либо из ваших имен файлов содержит пробел, использование ls в вашем скрипте приведет к большим ошибкам. Вы были предупреждены.
ЗШ
Я не уверен, что вы можете сделать то же самое в Bash, но в ZSH я бы поместил следующее где-то в .zshrc
function recursive_unrar() {
    for f in **/*.rar; do
        local cwd=`pwd` fbn=${f##*/}
        cd "${f%/*}"
        unrar e "$fbn"
        rm "${fbn%%.*}.r{01..99} $fbn"
        cd "$cwd"
    done
}
А затем просто позвоните изнутри соответствующей папки.