Propheta: Массовое переименование файлов с помощью утилиты find
Иногда бывает жизненно необходимо переименовать кучу файлов. Например заменить пробелы в названии файлов и директорий на нижний знак подчеркивания.
Сохраняем приведенный ниже скрипт в файл с именем 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
Автор Князь на 11:15
2 комментария:
Спасибо, помогло!
Только не от пробела надо было избавиться ))
Мне не помогло
slava@Mustang:~/Script$ ./Probel_tire.sh
find: невозможно искать `': Нет такого файла или каталога
find: все пути должны предшествовать выражению: 1
Использование: find [-H] [-L] [-P] [-Oуровень] [-D help|tree|search|stat|rates|opt|exec] [путь...] [выражение]
find: все пути должны предшествовать выражению: 0
Использование: find [-H] [-L] [-P] [-Oуровень] [-D help|tree|search|stat|rates|opt|exec] [путь...] [выражение]
slava@Mustang:~/Script$
Отправить комментарий