Автор Тема: Автоматизирано заместване на символи в името на файла  (Прочетена 1742 пъти)

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Здравейте, имам с n файла (n>1000), които в името си съдържат кавички ("), което е допустимо за Linux, но създават проблеми с ntfs под Windows.
Моля за насоки за bash скрипт за преименуването им, като се заместят кавичките с апостроф (') или друг символ.
Активен

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
Код:
rename s/\"/drug_simvol_ili_fraza/ *
забравих да предупредя, ако другия символ е апостроф, той също като кавичките трябва да се "неутрализира" с обратна наклонена черта:

Код:
rename s/\"/\'/ *

Всички файлове трябва да са в текущата директория. Въобще конструкцията е в този вид:

rename s/// file


между наклонените черти се вмъкват символите за смяна в името
« Последна редакция: Apr 26, 2013, 15:57 от dejuren »
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Благодаря много, сработи!
Уточнение: командата трябва да се пуска по 2 пъти, тъй като първият път заменя само отварящата кавичка.

А нещо, което да работи рекурсивно? пропуснах да спомена, че файловете ми са със структура източник/година/месец/дата/файл, напр.:
/media/Ema/BAN/dariknews.bg/2012/10/01/С "Уроците на времето" стартират Есенни музикални дни-2012 в Димитровград.pdf
Активен

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
за да не се пуска командата по два пъти това би трябвало да помогне:

rename s///g file

ще се заменят всички съвпадащи символи в името на файла.

Мислех и за рекурсивно, но все ми идват някакви комбинации от find, нещо като

find . -print | xargs rename s///g file или find . -name *\'* -print -exec rename s///g file {} \;

Може да си поекспериментираш с тези варианти, но не ги вземай за чиста монета, писах като чернова. Направи си копие в /tmp и тествай кой вариант те устройва.
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Благодаря много! Ще направя опити, но дори с първоначалната команда ми спести много време.
 [_]3
Активен

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8780
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Ех Анджи да видим кой е позабравил регулярките.  ;D

Иначе е така и аз се не сещам как да стане без find рекурсивно.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear