Пока у меня есть:
for file in *\_*
do file_clean="${file//_/ }"
mv --verbose "$file" "$file_clean"
done
Однако, он только переименовывает файлы в корневой каталог папки. Как мне сделать так, чтобы имена файлов с подчеркиванием рекурсивно переименовывались во все файлы и папки в этом каталоге?
Подумайте об использовании команды find (см. Man find). Это будет проходить через все подкаталоги и может запускать командный файл для каждого имени файла, используя опцию -exec {}.