Como posso renomear arquivos em massa em um arquivo RAR ou ZIP no mac?

0

Eu tenho um conjunto de arquivos - ambos os formatos zip e rar - dentro dos quais eu preciso renomear alguns arquivos. Especificamente, quero fazer algo assim:

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 -

O truque não é tanto na geração do novo nome; Eu posso fazer isso com bash ou sed ou qualquer outra coisa. É o conjunto de comandos para manipular os arquivos nos arquivos usando rar / unrar ou unzip / zip

(Se isso faz diferença, estou reformatando alguns arquivos CBR / CBZ para fazer com que os spreads de páginas duplas surjam na ordem correta no SimpleComic - ele interpreta a página 0203 como a página 203, o que faz com que história um pouco difícil de seguir)

    
por Chris R 28.01.2010 / 23:11

4 respostas

1

Acho que a maneira mais fácil de fazer isso é descompactar cada arquivo, fazer a operação de renomeação e, em seguida, reempacotá-lo.

No Linux, eu poderia usar um sistema de arquivos FUSE para ter arquivos descompactados de forma transparente, com os quais eu poderia operar como pastas regulares, usando um script em lote para fazer toda a renomeação. Eu não sei se esse sistema de arquivos FUSE existe para o Mac.

    
por 28.01.2010 / 23:32
2

Eu vejo o seu exemplo e vejo o PYTHON CODE:)

Realmente, acho que este deve ser o caminho a percorrer. Eu sei que isso não é stackoverflow .... mas esta é a única maneira que eu posso ver o seu problema resolvido.

Exemplo de código para extrair todos os arquivos:

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()

Espero que isso ajude

Esta página ensina como instalar um unrar para o linha de comando para o MAC .

Então você pode fazer um script para unrar e um script para rar seus arquivos e chamar então de python, e fazer o python mudar os nomes.

Para executar um script externo, use:

import os;
os.system("path/scritname");
    
por 09.03.2010 / 12:27
0

o rar tem uma opção de linha de comando para renomear arquivos no arquivo:

rar rn archive.rar filename newfilename

no entanto, o utilitário zip que você está usando não. Você precisará extrair, renomear e recomprimir como Ryan afirmou. Existem outros utilitários zip para Mac, que provavelmente têm esse recurso. Eu sei que o 7-zip tem suporte para renomear arquivos desde o 2.30 beta 25 , embora eu não tenha verificado se eles suportam a partir da linha de comando. 7-zip é bastante extenso quando se trata de opções de linha de comando, então eu diria que pode.

    
por 28.01.2010 / 23:36
0

Eu estive olhando para isso também, e eu suspeito que a coisa mais fácil de fazer é provavelmente escrever um script python para fazê-lo, especialmente porque você estará lidando com arquivos RAR e ZIP.

Parece que não há uma maneira particularmente limpa de renomear um arquivo em um arquivo zip sem descompactar todos os arquivos, renomear os que você deseja renomear e, em seguida, compactá-los novamente, o que não é realmente ideal. No entanto, eu tropecei em um utilitário OS / X chamado zipnote , que pretende fazer isso:

página de manual do zipnote

Ele não parece muito fácil de usar, mas pode valer a pena investigar, e supondo que ele não descompacte os arquivos em si, ele deve ser bastante fácil de automatizar. Enquanto isso, o utilitário de linha de comando OS / X rar suporta renomear arquivos dentro de arquivos RAR via rar rn foobar.rar oldname newname .

    
por 28.04.2013 / 21:08