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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: [РЕШЕНО]Скрипт переименования папок и файлов  (Прочитано 8352 раз)

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

Оффлайн red_sam

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Здравствуйте
Нашел вот такой скрипт
(Нажмите, чтобы показать/скрыть)
Работает нормально
Хочу сделать чтобы переименование было рекурсивным т.е в подпаках тоже заменялись пробелы знаками "_"
Подскажите новичку - как определить что в переменной $filename содержится имя папки для передачи этого имени в начало скрипта
« Последнее редактирование: 16 Апреля 2011, 10:58:06 от red_sam »

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Скрипт переименования папок и файлов
« Ответ #1 : 13 Апреля 2011, 08:30:17 »
не совсем ясно как работает скрипт, но:
find $path* -type d  - получиться все папки, рекурсивно
find $path* -type f  - получиться все файлы, рекурсивно
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн red_sam

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: Скрипт переименования папок и файлов
« Ответ #2 : 13 Апреля 2011, 08:36:39 »
не совсем ясно как работает скрипт, но:
я тоже не понял ))) (скрипт взят с opennet)
find $path* -type d  - получиться все папки, рекурсивно
find $path* -type f  - получиться все файлы, рекурсивно
это то что я и хотел узнать

Оффлайн easy2002

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2786
  • Мурманск
    • Просмотр профиля
Re: Скрипт переименования папок и файлов
« Ответ #3 : 13 Апреля 2011, 09:31:05 »
Рекурсивная замена пробелов на подчеркивания в именах файлов и каталогов
find /path/to/files -type f | while read full; do name=${full##*/}; mv -- "${full}" "${full%/*}/${name// /_}"; done;
Tempora mutantur et nos mutantur in illis

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Скрипт переименования папок и файлов
« Ответ #4 : 13 Апреля 2011, 14:20:01 »
Скрипт действительно странновато написан.

Цитировать
Подскажите новичку - как определить что в переменной $filename содержится имя папки для передачи этого имени в начало скрипта
$filename берет значения в виде имен файлов из массива $path*. А $path берет свои значения из $1 - параметра запуска из командной строки.
Т.е., запускаем скрипт: script /home/user/files/. Следовательно $1="/home/user/files/". Потом $path=$1="/home/user/files/", и $filename последовательно берет значения из /home/user/files/*.

Из-за особенностей скрипта параметр пути должен оканчиваться на /
и вот еще прикольный момент:
Цитировать
fname=$filename                      # Удалить путь из имени файла.
кто все-таки будет удалять путь из имени файла непонятно. Следовательно передаваемый скрипту путь не должен содержать пробелов.

Оффлайн red_sam

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: Скрипт переименования папок и файлов
« Ответ #5 : 13 Апреля 2011, 15:03:55 »
Цитировать
Следовательно передаваемый скрипту путь не должен содержать пробелов.
Да да  :D
При модификации скрипта как сказал RazrFalcon
(Нажмите, чтобы показать/скрыть)
на выходе получается что ничего не переименовывается, а echo "$filename" возвращает
(Нажмите, чтобы показать/скрыть)
когда find /home/red/ -type d
(Нажмите, чтобы показать/скрыть)


Пользователь решил продолжить мысль 13 Апреля 2011, 16:08:00:
Частично решил проблему - переименовал все файлы
вот этим скриптом
(Нажмите, чтобы показать/скрыть)
Спасибо easy2002

с директориями не могу пока разобраться

Пользователь решил продолжить мысль 15 Апреля 2011, 05:30:37:
Затупил... скрипт
(Нажмите, чтобы показать/скрыть)
отлично работает. Не знаю видимо у меня сегодня резко руки выправились :)
« Последнее редактирование: 16 Апреля 2011, 10:57:43 от red_sam »

 

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