Ссылка, которую вы публикуете, дает "правильный" ответ, на мой взгляд. Просто порождайте раковину. Без этого у вас не будет достаточно большого набора инструментов. Вы можете создать команду поиска в псевдокоде, например:
find /path -criteria -exec mkdir {} \; -exec extract {} \; -exec rm {} \;
Это остановит любую ошибку, так как предикаты естественным образом объединены. Но это дает вам недостаточный контроль над наименованием каталога. Это гарантированно потерпит неудачу.
Создание оболочки решает эту проблему, так как у вас будет весь язык оболочки:
find /path -criteria -exec /bin/sh '
for d; do
mkdir "${d##*/}" && tar xvf "$d" && rm "$d"
done' _ {} +
Обратите внимание, что эта версия имеет побочный эффект продолжения ошибки при любой итерации цикла - она порождает единую оболочку для всех результатов. Я бы посоветовал вызывать оболочку с флагом -e, если вы хотите решительно остановиться на любой ошибке.