Иногда бывает жизненно необходимо переименовать кучу файлов. Например заменить пробелы в названии файлов и директорий на нижний знак подчеркивания.
Сохраняем приведенный ниже скрипт в файл с именем mass-replace.sh
#!/bin/sh # Определяем глубину вложенности директорий depth=$((`find "$1" -type d -print | sed -E 's/[^/]+//g' | sort | tail -n 1 | wc -c`+1)); # Макрос, переименовывающий файлы и директории replacer='new="`dirname "{}"`/`basename "{}" | sed "s/ /_/g"`"; if [ "$new" != "{}" ]; then mv "{}" "$new"; fi;'; # Обходим все уровни вложенности while [ $depth -ge 0 ]; do # Находим и заменяем find "$1" -depth $depth -and -name '* *' -print -exec sh -c "$replacer" ; # Меняем уровень вложенности depth=$(($depth-1)); done;
Сделаем файл исполняемым
$ chmod +x mass-replace.sh
В качестве аргумента скрипту передается путь до обрабатываемой директории
$ ./mass-replace.sh ~/Warez/Music