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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: rename нескольких символов. как?  (Прочитано 1087 раз)

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

Оффлайн illia

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
rename нескольких символов. как?
« : 15 Августа 2011, 12:18:23 »
Здравствуйте! Подскажите пожалуйста как изменить несколько символов в имени файла.

знаю как переименовать по одному символу rename -f 's/&/_/g'  *.mp3
а как поменять к примеру символы &,% на _

ALiEN175

  • Гость
Re: rename нескольких символов. как?
« Ответ #1 : 15 Августа 2011, 12:45:34 »
заключите в квадратные скобки.

rename -f 's/[&%]/_/g'  *.mp3

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: rename нескольких символов. как?
« Ответ #2 : 15 Августа 2011, 13:25:59 »
Здравствуйте! Подскажите пожалуйста как изменить несколько символов в имени файла.

знаю как переименовать по одному символу rename -f 's/&/_/g'  *.mp3
а как поменять к примеру символы &,% на _
rename -f 's/&|%/_/g'  *.mp3

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #3 : 15 Августа 2011, 13:52:42 »
Командой rename меняем все также как и с sed, но не в содержимом файла, а в имени файла.
Символ & используется для использовании группы (чтобы не повторять уже написанное однажды). Поэтому его лучше экранировать, чтобы не было мучительно больно ...

Оффлайн illia

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #4 : 15 Августа 2011, 16:29:03 »
Спасибо, это то что искал))

Только вот теперь у меня возник еще один вопрос как. При переименовывании иногда создаются по 2 - 5 символов _ подряд, подскажите пожалуйста как почистить. К примеру Chase & Status получается Chase___Status, а надо Chase_Status

Можно конечно несколько раз запустить rename -f 's/__/_/g' *.mp3 но это как то не правильно ))

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #5 : 15 Августа 2011, 16:55:29 »
rename 's/_+/_/g' filename
Пример.
$ touch __a___b____c
$ ls _*
__a___b____c
$ rename 's/_+/_/g' _*
$ ls _*
_a_b_c
« Последнее редактирование: 15 Августа 2011, 17:02:28 от alexander.pronin »

Оффлайн illia

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #6 : 15 Августа 2011, 22:31:34 »
спасибо rename 's/_+/_/g' filename подошло

еще вопрос, есть ли способ сделать ренейм всех остальных символов, мне кажеться для чистки имен большого кол-ва файлов перечислить все "мусорные" символы гиморой не меньше ручного переименовывания ))

т.е. если символ не a-z, A-Z, -, ., _ то заменять его на _ к примеру.

Оффлайн lukinfore

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #7 : 16 Августа 2011, 13:11:53 »
Цитировать
т.е. если символ не a-z, A-Z, -, ., _ то заменять его на _ к примеру.
's/[^a-zA-Z]/_/g'
циферки тоже ведь нелишние?
's/[^0-9a-zA-Z]/_/g'
насчет  utf символов - хз

http://citforum.ru/internet/perl/regexp - доступно, ну или гугл, дабы не спрашивать про каждое возможное

Оффлайн illia

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #8 : 16 Августа 2011, 15:47:39 »
Цитировать
т.е. если символ не a-z, A-Z, -, ., _ то заменять его на _ к примеру.
's/[^a-zA-Z]/_/g'
циферки тоже ведь нелишние?
's/[^0-9a-zA-Z]/_/g'
насчет  utf символов - хз

http://citforum.ru/internet/perl/regexp - доступно, ну или гугл, дабы не спрашивать про каждое возможное

Ваш вариант просто удаляет файл.

сори, переносит в рут
« Последнее редактирование: 16 Августа 2011, 16:58:05 от illia »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #9 : 16 Августа 2011, 16:46:15 »
Наверное не
's/[^a-zA-Z]/_/g'
, а
's/^[a-zA-Z]/_/g'
ЗЫ. Наверное, я не прав.
« Последнее редактирование: 16 Августа 2011, 17:01:34 от alexander.pronin »

Оффлайн illia

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #10 : 16 Августа 2011, 17:07:43 »
да вроде все правильно, только когда выполняю этот вариант файл переносит в папку пользователя и сохраняет в имени файла полный путь к нему. Команда
rename -f 's/[^0-9a-zA-Z.-]/_/g' /home/mp3/chill/*.mp3
приводит к тому что в папке root получаю файл _home_mp3_chill_m-seven_-____Centripetal

а вариант с поиском и заменой опр. символа

rename -f 's/[ &,#:?]/_/g' /home/mp3/chill/*.mp3

оставляет измененный файл в той же папке.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #11 : 16 Августа 2011, 17:30:42 »
Я считал, что надо вначале попасть в ту директорию, где будет проводиться экзекуция.
cd куда-то
и т.д. все операции с файлами из директории 'куда-то'.

Оффлайн lukinfore

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #12 : 16 Августа 2011, 19:49:55 »
Цитировать
rename -f 's/[^0-9a-zA-Z.-]/_/g' /home/mp3/chill/*.mp3
приводит к тому что в папке root получаю файл _home_mp3_chill_m-seven_-____Centripetal
Эмм, ты т.е. всю самонепонимаемую черную магию от рута делаешь? Определенно не стоит. Или на /root 777 права, что также слегка идиотизм?
А так все правильно, под такой шаблон ведь '/' подходит. Ну 's/[^0-9a-zA-Z\/]/_/g' наверно.

Чего-то не могу перл-однострочник найти. Это ведь на лоре было? Топик удалили, что-ли...
« Последнее редактирование: 16 Августа 2011, 19:59:20 от lukinfore »

Оффлайн illia

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #13 : 16 Августа 2011, 21:29:17 »
Я считал, что надо вначале попасть в ту директорию, где будет проводиться экзекуция.
cd куда-то
и т.д. все операции с файлами из директории 'куда-то'.

у меня по крону чистка имен, поэтому cd не очень хотелось бы...

lukinfore, root это к примеру, в папке пользователя. Но вопрос не в этом. Почему при выполнении
rename -f 's/[^0-9a-zA-Z.-]/_/g' /home/mp3/chill/*.mp3
файл переност в папку юзера

Оффлайн lukinfore

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: rename нескольких символов. как?
« Ответ #14 : 16 Августа 2011, 23:08:57 »
Цитировать
Почему при выполнении rename -f 's/[^0-9a-zA-Z.-]/_/g' /home/mp3/chill/*.mp3 файл переност в папку юзера

Насчет юзера хз, но в ./ должен перенести по такому шаблону
(rename -f 's/[^0-9a-zA-Z.-]/_/g' "/dir/f i-l.3") == (mv "/dir/f i-l.3" ./_dir_f_i-l.3) же
Непонятно правда -f зачем. Мп3шки старые затирать?

.==$(pwd)== текущая директория, если в этом вопрос
« Последнее редактирование: 16 Августа 2011, 23:13:20 от lukinfore »

 

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