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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Утилита rename - замена символов в названии файлов  (Прочитано 2485 раз)

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

Оффлайн sergey113

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 406
  • равновесие
    • Просмотр профиля
    • Недоделанный сайт :)
Вроде народ в этой теме по rename спрашивает.  Использую такую конструкцию для замены символов : из имен файлов на символ _
rename -v 's/:/_/g' имя_файлаЕсли я использую короткий путь без пробелов и кириллицы, то работает. Но мне надо рабтать с длинными путями и различными символами. Как тут выкрутиться?
Вот пример пути:
'/home/korolev/Documents/\!work/Клиенты/Постоянные\ клиенты/amp/Администрирование\ сайта/задания/Обновление\ отзывов\ -\ 2015-05-17/Редактирование\ отзывов\ на\ сайте\ amp/Screenshot\ from\ 2015-05-17\*'
Заковычивал в одинарные ковычки и двойные не работает. Делал экранирование \ тоже не пашет. При наборе пути использовал двойное нажатие tab ошибки в пути нет.
ubuntu 14.04+firefox+virtualbox+windows=туда-сюда ::)
dell 1220-Core2Duo 2200МГц (T6670)-4Gb DDR2-800МГц-Intel GMA 4500MHD-ЗВУК Intel HDA-HTS725050A7E630

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3271
    • Просмотр профиля
Экранирование должно работать. Например, есть каталог
~/tmp/file file
в нем файл с именем, содержащим пробелы и русские буквы, а также два двоеточия,
и есть скрипт ren_
#!/bin/tcsh

cd "$1"
foreach flnm ( "`/bin/ls -1`" )
if (-f "$flnm" ) then
echo "`pwd`"/"$flnm"
rename -v 's/:/_/g' "$flnm"
endif
end
При его вызове как
./rem_ ~/tmp/file\ fileон переименовывает файл в этом каталоге.
Пётр.

Оффлайн sergey113

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 406
  • равновесие
    • Просмотр профиля
    • Недоделанный сайт :)
Может и должно экранирование работать, но не работает (в ubuntu вообще много, что должно нормально работать, а на практике выбешивает своими недоработками).
Спасибо главное, что я понял из Вашего примера, что напрямую это не заработает и надо писать скрипт.
Ваш скрип у меня не заработал.
« Последнее редактирование: 18 Июля 2015, 13:02:58 от sergey113 »
ubuntu 14.04+firefox+virtualbox+windows=туда-сюда ::)
dell 1220-Core2Duo 2200МГц (T6670)-4Gb DDR2-800МГц-Intel GMA 4500MHD-ЗВУК Intel HDA-HTS725050A7E630

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3271
    • Просмотр профиля
Я сейчaс в Debian, a на длинных именах я скрипт не проверял.
У меня shell tcsh, поэтому и скрипт на нём.
« Последнее редактирование: 18 Июля 2015, 14:03:21 от Peter_I »
Пётр.

Оффлайн sergey113

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 406
  • равновесие
    • Просмотр профиля
    • Недоделанный сайт :)
у меня bash. Мне надо будет сделать свой скрипт. Большое спасибо за помощь.
ubuntu 14.04+firefox+virtualbox+windows=туда-сюда ::)
dell 1220-Core2Duo 2200МГц (T6670)-4Gb DDR2-800МГц-Intel GMA 4500MHD-ЗВУК Intel HDA-HTS725050A7E630

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3271
    • Просмотр профиля
Можно просто установить tcsh.
Пётр.

Оффлайн sergey113

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 406
  • равновесие
    • Просмотр профиля
    • Недоделанный сайт :)
Да, можно, но я сторонник поменьше устанавливать и побольше использовать из коробки. Если это не дает ощутимых плюсов в работе. Ведь это экономит время при переустановке и настройке. На другом ПК может не стоять tcsh, а bash будет наверняка.  Пожнешь привычку потом будет негатив.
Я пока "колхозю" на простой ubuntu с unity. Других систем у меня нет и смысла устанавливать tcsh тоже нет.  вникнуть в написание скирптов на bash давно уже надо. :) вот будет повод приобщиться.
ubuntu 14.04+firefox+virtualbox+windows=туда-сюда ::)
dell 1220-Core2Duo 2200МГц (T6670)-4Gb DDR2-800МГц-Intel GMA 4500MHD-ЗВУК Intel HDA-HTS725050A7E630

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3271
    • Просмотр профиля
На bash в данном случае будет почти так же, но бывают случаи,
когда на tcsh что-то сделать проще, чем на bash, но вроде бы
чаще наоборот. В т.ч. в tcsh нет функций.
#!/bin/bash

echo "$1"
cd "$1"
for  flnm in "`/bin/ls -1`" ; do
if [ -f "$flnm" ] ; then
echo "`pwd`"/"$flnm"
rename -v 's/:/_/g' "$flnm"
fi
done
Пётр.

Оффлайн sergey113

  • Автор темы
  • Забанен
  • Активист
  • *
  • Сообщений: 406
  • равновесие
    • Просмотр профиля
    • Недоделанный сайт :)
Скрипт пока не работает. Переименовал все файлы в ручную  :) нет времени сейчас разбираться.  Надо выполнить работу,а потом если время будет. Потом разберусь.Спасибо за участие в моих проблемах.
ubuntu 14.04+firefox+virtualbox+windows=туда-сюда ::)
dell 1220-Core2Duo 2200МГц (T6670)-4Gb DDR2-800МГц-Intel GMA 4500MHD-ЗВУК Intel HDA-HTS725050A7E630

 

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