Используйте rename
(он же prename
), который является Perl-скриптом, который уже может быть в вашей системе. Сделайте это в два этапа:
find -name "* *" -type d | rename 's/ /_/g' # do the directories first
find -name "* *" -type f | rename 's/ /_/g'
Основано на ответе Юргена и может обрабатывать несколько слоев файлов и каталогов в одной строке, используя версию Revision 1.5 1998/12/18 16:16:31 /usr/bin/rename
( скрипт Perl):
find /tmp/ -depth -name "* *" -execdir rename 's/ /_/g' "{}" \;