Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как переименовать файлы по маске? 
:(
    Опции темы
nikki4
Дата 27.9.2012, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 27.10.2009

Репутация: нет
Всего: нет



Есть файлы пдф под название 1,2,3,4,5....
нужно изменить их название на имя файла*2-1. т.е. 1,3,5,7,9,11.
как это сделать? скачал ренеймер, но чето там не пойму как делать.. мож еще прога какая есть и как это сделать?
PM MAIL   Вверх
Данкинг
Дата 27.9.2012, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



Не думаю, что стандартные переименовалки могут такие узкоспециализированные задачи делать. Так что если только самому прогу писать.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
rsm
Дата 27.9.2012, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Задача не так проста, как может показаться на первый взгляд. Нюанс в том, что нумерацию нужно начинать в обратном порядке, т.е. от большего к меньшему: 5 => 3 => 1. В противном случае будут потери данных, т.к. уже переименованные файлы наложатся на существующие:
1 => 1
2 => 3
3 => 5 # файла 3 уже нет, он затёрт предыдущим
Значит, сначала нужно узнать количество файлов. Накидал на скорую руку однострочник:

Код

n=`ls [0-9]*.[pP][dD][fF] | wc -l`; n=$((n*2-1)); ls -vr [0-9]*.[pP][dD][fF] | while read file; do name="$n.pdf"; n=$((n-2)); [ "$file" = "$name" ] || mv -vi "$file" "$name"; done

Он примитивный, но основную идею демонстрирует.
PM MAIL   Вверх
Cheloveck
Дата 27.9.2012, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 1
Всего: 32



Несколько строк на питоне. Так как задача одноразовая, то указанная rsm проблема обходится просто двойным проходом.
Код

import os

os.chdir("files")
names = os.listdir(".")
for name in names:
    os.rename(name, "tmp_" + str(int(name[:name.find('.')]) * 2 - 1))

names = os.listdir(".")
for name in names:
    os.rename(name, name[4:] + ".pdf")


Это сообщение отредактировал(а) Cheloveck - 27.9.2012, 20:32


--------------------
user posted image
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Разные вопросы"
Smartov

Сюда нужно постить только темы, которые нельзя отнести ни к одному из существующих разделов. Если вы не уверены, то просмотрите еще раз заголовки форумов, карту форума или попробуйте воспользоваться поиском.
Если вы все же не смогли найти подходящего раздела - создавайте тему здесь.


С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разные вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.