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

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

Оффлайн infernos1

  • Новичок форума
  • Сообщений: 9
Массовое переименование файлов
« : 06 Октября 2015, 20:31:21 »
Доброго всем дня, подскажите пожалуйста как решить данный вопрос.
Имеется raid раздел размером 6тб, на нем заполнено файлами и папками около 5тб.
Файлов много, в каждой папке по 10-20 отчетов, папок около 25000.
Нужно по опредленному шаблону прогнать эти файлы и убрать из их имен
" , ",Чем такое можно провернуть?
 

Оффлайн alsoijw

Re: Массовое переименование файлов
« Ответ #1 : 06 Октября 2015, 20:57:17 »
infernos1, sed -ом можно вырезать что-то из текста. Подставить вывод одной команды как аргумент другой взяв команду в ``. Сменить имя можно с помощью mv. Выбрать все файлы find
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?
 

Оффлайн infernos1

  • Новичок форума
  • Сообщений: 9
Re: Массовое переименование файлов
« Ответ #2 : 06 Октября 2015, 21:01:19 »
infernos1, sed -ом можно вырезать что-то из текста. Подставить вывод одной команды как аргумент другой взяв команду в ``. Сменить имя можно с помощью mv. Выбрать все файлы find
А хоть пример не покажете? пожалуйста.
Я не очень понимаю :(
 

yura_n

  • Гость
Re: Массовое переименование файлов
« Ответ #3 : 06 Октября 2015, 21:22:30 »
Чем такое можно провернуть?
Не думаю, что существует какое-то простое решение, там до кучи еще и пробелы... надо парсить имена файлов, с удалением ненужного. Я бы напитонил скрипт для этого.
« Последнее редактирование: 06 Октября 2015, 21:24:26 от yura_n »
 

Оффлайн infernos1

  • Новичок форума
  • Сообщений: 9
Re: Массовое переименование файлов
« Ответ #4 : 06 Октября 2015, 21:25:55 »
напитонил
Красиво звучит, н ок сожалению у меня знание debian на уровне apt-get install
 

Оффлайн endru

Re: Массовое переименование файлов
« Ответ #5 : 07 Октября 2015, 06:21:33 »
у меня знание debian на уровне apt-get install
учи команды. нужные тебе подсказали. вот подсказка find - поиск файлов - памятка по команде

Оффлайн alsoijw

Re: Массовое переименование файлов
« Ответ #6 : 07 Октября 2015, 13:37:02 »
А хоть пример не покажете? пожалуйста.
Я не очень понимаю :(
Не идеальный код, но я пока лучше не умею :(
Код: (bash) [Выделить]
files="`find`"
for file in $files
do
mv "$file" "`echo $file" | sed "s/&quot ; , ",//g"`"
done
Вроде ничего не перепутал.
yura_n, питон это явно не оптимальное решение.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?
 

Оффлайн endru

Re: Массовое переименование файлов
« Ответ #7 : 07 Октября 2015, 13:42:22 »
alsoijw, без экранирования спецсимволов (пробелы тоже к ним относятся) работать не будет. да и find что будет искать? в какой директории? или будет перебирать все системные файлы?

yura_n

  • Гость
Re: Массовое переименование файлов
« Ответ #8 : 07 Октября 2015, 13:49:27 »
yura_n, питон это явно не оптимальное решение.
Ну это как сказать. Здесь присутствуют символы '&' и ';' , которые в именах файлов очень, очень использовать нежелательно. Плюс пробел, который хоть и можно использовать, но он добавляет проблем. На мой взгляд, работа именно как со строкой, а не как с именем файла здесь удобнее.
 

Оффлайн alsoijw

Re: Массовое переименование файлов
« Ответ #9 : 07 Октября 2015, 15:24:18 »
endru, ты имеешь в виду sed работать не будет? Работает.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?
 

Оффлайн endru

Re: Массовое переименование файлов
« Ответ #10 : 08 Октября 2015, 06:59:11 »
alsoijw, т.е. есть на практике применение данного велосипеда?
ок. не поленился воссоздать картину. на примере 1 пробела в файле:
$ ls
123 032.txt
$ files=`find ./ -type f`;for file in $files;do echo $file;done
./123
032.txt
на первом этапе скрипта мы получили проблему не существующих файлов, виноват пробел.
почему нельзя воспользоваться стандартными решениями и сделать все одной командой?
$ ls
123 032.txt
$ find ./ -type f -exec rename 's/3\ 0//g' {} \;
$ ls
1232.txt
а экранирование - это очень полезное правило, результат действий становится более предсказуем:
$ ls
123 $ 032.txt
$ find ./ -type f -exec rename 's/3 $ 0/30/g' {} \;
$ ls
123 $ 032.txt
$ find ./ -type f -exec rename 's/3\ \$\ 0/30/g' {} \;
$ ls
123032.txt

Теги:
     

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

    Автор rezedent12

    Ответов: 5
    Просмотров: 2673
    Последний ответ 28 Июля 2012, 22:45:28
    от alltiptop
    массовое переименование файлов

    Автор lumberjack

    Ответов: 2
    Просмотров: 1575
    Последний ответ 26 Февраля 2014, 16:18:11
    от endru