Задача: изменить расширение у всех соответствующих файлов в текущей папке и всех подпапках.
Изменяем расширение с .alaw на .ulaw:
for f in `find . -type f -iname '*.alaw'`; do mv "$f" "`dirname "$f"`"/"`basename "$f" .alaw`"".ulaw"; done;
Немного разберу:
выбираем в массив f все файлы оканчивающиеся на '*.alaw' без учёта регистра:
for f in `find . -type f -iname '*.alaw'`
с каждым элементом массива f выполняем действия:
do mv "$f" "`dirname "$f"`"/"`basename "$f" .alaw`"".ulaw";
dirname «$f» — извлекаем путь к файлу.
basename «$f» .alaw — извлекаем базовое имя исходя из расширения .alaw.
Матерьял с сайта TangaRUS