Замена одной буквы на другую

openSUSE, SUSE Linux Enterprise

Модератор: Модераторы разделов

tjoma
Сообщения: 108

Замена одной буквы на другую

Сообщение tjoma »

Доброго время суток уважаемые господа !
Дело в следующем : нужно рекурсивно найти поменять в названии файлов и папок одну букву на другую . .файли разные odt,doc.txt,pdf и другие и их очень много
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19499
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Замена одной буквы на другую

Сообщение Bizdelnick »

man rename
man prename
Не Вам ли недавно про эти утилиты рассказывали?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
tjoma
Сообщения: 108

Re: Замена одной буквы на другую

Сообщение tjoma »

вопрос решыл напысав скрипт.

Код: Выделить всё

#!/bin/bash
find path1 path2 -type f | while read full                       # find - ищет файлы в указанном пути, while - осуществляет
do                                                                                 # циклическое действие
name=${full##*/}                                                          # вырезаем имя файла, функция убирает все до последнего слеша "/",
mv -- "${full}" "${full%/*}/${name// /_}"                       # оставляя только имя файла
done                                                                           # перемещаем старый файл (полное имя которого в переменной full) в
                                                                                   # новый, образованный
                                                                                   # именем файла (переменная name, в которой сделана замена пробела на _)
                                                                                   # и путем
                                                                                   # к нему (получен методом обрезания полного имени файла до первого
                                                                                   # слеша)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Замена одной буквы на другую

Сообщение drBatty »

tjoma писал(а):
10.03.2015 17:36
find path1 path2 -type f | while read full

Код: Выделить всё

while read full; do
#…
done< <(find …)

tjoma писал(а):
10.03.2015 17:36
name=${full##*/}

$

man basename


tjoma писал(а):
10.03.2015 17:36
${full%/*}

$

man dirname



PS: Bizdelnick уже подсказал нормальное решение.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: