Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Убрать из названия группы файлов часть текста  (Прочитано 15178 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
find /каталог -exec rename 's/текст, который надо убрать//g' {} \; работает нормально, но не так универсально
Вполне универсально, просто нужно добавить регулярное выражение для переменного текста.
В вашем случае будет выглядеть так:
Код: (bash) [Выделить]
find /каталог -exec rename 's/Библиотека электромонтера [0-9]*[.] //g' {} \;

Оффлайн zveryakov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
find /каталог -exec rename 's/текст, который надо убрать//g' {} \; работает нормально, но не так универсально
Вполне универсально, просто нужно добавить регулярное выражение для переменного текста.
В вашем случае будет выглядеть так:
Код: (bash) [Выделить]
find /каталог -exec rename 's/Библиотека электромонтера [0-9]*[.] //g' {} \;
Спасибо, сейчас попробую, а то я тут мучаюсь
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 15 Июня 2013, 15:19:19 от zveryakov »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
есть файлы в названиии которых после "Библиотека электромонтёра 00ХХ" стоит не точка а тильда (~), они остались не переименоваными
find ./ -exec rename 's/Библиотека электромонтера [0-9]*[~] //g' {} \; не помогает
После тильды пробел есть?
Скопируйте сюда пару имён для примера.

Кстати, если рекурсия не требуется, то find использовать не нужно.
Т.е. можно сделать проще:
Код: (bash) [Выделить]
rename 's/Библиотека электромонтера [0-9]*([.]|~) //g' *
« Последнее редактирование: 15 Июня 2013, 15:50:08 от ArcFi »

Оффлайн zveryakov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
После тильды нет пробела, т.е. так 00XX~Название
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 15 Июня 2013, 15:59:23 от zveryakov »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Рекурсия не требуется? Это всмысле если все в одном каталоге лежит?
Да, если в одном каталоге, то find не нужен.

Вот, так работает для точки с пробелом и для тильды без пробела:
Код: (bash) [Выделить]
rename 's/Библиотека электромонтера [0-9]*([.] |~)//g' *

Оффлайн zveryakov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Супер! Все работает отлично. Вопрос. Где взяли все это, где почитать? В манах все на инглише

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Супер! Все работает отлично. Вопрос. Где взяли все это, где почитать? В манах все на инглише
На буржуйском и читал. =)

rename в ubuntu является алиасом на prename, который использует perl-регэкспы.
Вот пара линков про perl-регулярки на русском:
http://citforum.ru/internet/perl_tut/re.shtml
http://citforum.ru/internet/perl/regexp/

И кстати, perl-регэкспы похожи на sed.
Неплохой сборник примеров использования sed на русском есть тут:
http://www.opennet.ru/base/dev/sed1line.txt.html
« Последнее редактирование: 15 Июня 2013, 16:32:35 от ArcFi »

Оффлайн zveryakov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Спасибо большое

 

Страница сгенерирована за 0.025 секунд. Запросов: 22.