Как я могу массово переименовать файлы в rar или ZIP-архиве на mac?

у меня есть набор архивных файлов-как zip, так и RAR-форматов, внутри которых мне нужно переименовать некоторые файлы. Конкретно, я хочу сделать что-то вроде этого:

for each archive file in a directory
    for each file in the archive
        if the file name matches the regular expression /(.* - [0-9]{2})([0-9]{2} - .)*/
            rename the file as -

трюк не так много в поколении нового имени; я могу сделать это с любым bash или sed или что-нибудь еще. Это набор команд для управления файлами в архивах с помощью rar/unrar или unzip/zip

(если это имеет значение, я переформатирую некоторые CBR / CBZ файлы, чтобы получить двухстраничные спреды, чтобы придумать в правильном порядке в SimpleComic - он интерпретирует страницу 0203 как страницу 203, что делает историю немного трудно следовать)

24
задан Chris R
17.03.2023 14:43 Количество просмотров материала 3689
Распечатать страницу

4 ответа

Я думаю, что самый простой способ сделать это-распаковать каждый архив, выполнить операцию переименования, а затем упаковать его.

в Linux я мог бы использовать файловую систему FUSE, чтобы иметь прозрачно распакованные архивы, которые я мог бы работать как обычные папки, используя пакетный скрипт для переименования. Я не знаю, существует ли эта конкретная файловая система FUSE для Mac.

1
отвечен Ryan Thompson 2023-03-18 22:31

смотрю съел ты пример и вижу PYTHON код:)

На самом деле я думаю, что это должен быть путь. Я знаю, что это не stackoverflow.... но это единственный способ решить твою проблему.

пример кода для извлечения всех файлов:

import zipfile

a = zipfile.ZipFile("C:\x.zip", 'r')
for i in a.namelist():         #Extract every file from it
     b = open("C:\"+i, 'wb')
     b.write(a.read(i))
     #HERE YOU INSERT WHAT YOU WANT TO DO TO EACH FILE (b is the last file)
     b.close()
a.close()

надеюсь, что это помогает

эта страница учит, как установите unrar для командной строки для MAC.

Так что вы можете сделать скрипт для unrar и скрипт для rar файлов и затем вызовите python и заставьте python изменить имена.

для выполнения внешнего скрипта используйте:

import os;
os.system("path/scritname");
2
отвечен Krazy_Kaos 2023-03-19 00:48

RAR имеет переключатель командной строки для переименования файлов в архиве:

rar rn archive.rar filename newfilename

однако утилита zip, которую вы используете, этого не делает. Вам нужно извлечь, переименовать и повторно сжать, как сказал Райан. Есть и другие zip утилиты для Mac, которые, вероятно, имеют эту возможность. Я знаю, что 7-zip поддерживает переименование в archives С 2.30 beta 25, хотя я не проверял, поддерживают ли они его из командной строки. 7-zip довольно обширен, когда дело доходит до командной строки варианты, так что я предполагаю, что это возможно.

0
отвечен John T 2023-03-19 03:05

Я тоже изучал это, и я подозреваю, что самое простое-это, вероятно, написать скрипт python, чтобы сделать это, особенно потому, что вы будете иметь дело как с RAR, так и с ZIP-файлами.

похоже, нет особо чистого способа переименовать файл в zip-архиве, не распаковывая все файлы, переименовывая те, которые вы хотите переименовать, а затем архивируя их обратно, что на самом деле не идеально. Тем не менее, я наткнулся на утилиту OS/X под названием zipnote Что делает смысл для этого:

zipnote man page

это не выглядит ужасно простым в использовании, но это может быть стоит изучить, и предполагая, что это на самом деле не распаковать файлы, это должно быть довольно легко автоматизировать. Тем временем, the утилита командной строки OS/X RAR поддерживает переименование файлов внутри RAR-архивов через rar rn foobar.rar oldname newname.

0
отвечен Tim Gilbert 2023-03-19 05:22

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх