Как заменить символ в нескольких файлах? [дубликат]

На этот вопрос уже есть ответ здесь:

У меня много файлов в каталоге (с папками, поэтому я думаю, что решение должен быть рекурсивным глубоко)

  • корневая папка
    • файл-1.png
    • файл-2.png
    • файл-3.png
    • файл -4.png
    • файл-5.png
    • папка-1
      • файл-1.png
      • файл-2.png
      • файл-3 .png

Мне нужно переименовать все файлы, содержащие символы - , в _ .

file-1.png -> file_1.png

Но. У меня небольшое замечание. Не должны затрагиваться папка-1 и корневая папка .

Как я могу это сделать?

0
задан 25 November 2015 в 18:45

2 ответа

Используя находку и жемчуг переименовывают команду:

find . -depth -name "*-*" -execdir prename -v s/-/_/g {} +
0
ответ дан 26 July 2019 в 14:22

Вы делаете что-то вроде этого:

#! /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>

единственный прием к использованию этого сценария - то, что, если какой-либо родительский каталог имеет "-" на их имя, Вы измените это также. Можно, конечно, обработать это, но ответ стал бы слишком сложным и действительное решение, потерянное посреди него.

это добивается цели? Сообщите мне, есть ли у Вас какие-либо другие вопросы.

За Ваше здоровье!

-1
ответ дан 26 July 2019 в 14:22

Другие вопросы по тегам:

Похожие вопросы: