На этот вопрос уже есть ответ здесь:
У меня много файлов в каталоге (с папками, поэтому я думаю, что решение должен быть рекурсивным глубоко)
Мне нужно переименовать все файлы, содержащие символы -
, в _
.
file-1.png -> file_1.png
Но. У меня небольшое замечание. Не должны затрагиваться папка-1
и корневая папка
.
Как я могу это сделать?
Используя находку и жемчуг переименовывают команду:
find . -depth -name "*-*" -execdir prename -v s/-/_/g {} +
Вы делаете что-то вроде этого:
#! /bin/bash
ROOT_DIR=$1
cd "$ROOT_DIR"
IFS="
"
for file in $(find -type f)
do
mv -v "$file" "$(echo $file | sed -e 's#-#_#g')"
done
unset IFS
cd -
Принятие этого сценария называют "мой-rename.sh". Назовите его как это:
$ ./my-rename.sh <path-to-root-folder>
единственный прием к использованию этого сценария - то, что, если какой-либо родительский каталог имеет "-" на их имя, Вы измените это также. Можно, конечно, обработать это, но ответ стал бы слишком сложным и действительное решение, потерянное посреди него.
это добивается цели? Сообщите мне, есть ли у Вас какие-либо другие вопросы.
За Ваше здоровье!