Mover diretórios com base no arquivo .md5 para restaurar a estrutura de diretórios original

0

Eu peço ajuda sobre alguns scripts.

Eu tenho um diretório "J: \ To_Sort" que contém outros 1164 diretórios. Dentro do diretório "To_Sort" eu também tenho 37 arquivos * .md5. Esses arquivos MD55 contêm a soma de verificação e os caminhos originais para cada arquivo & diretório. Eles são nomeados:

  • selected-dir-01.md5
  • selected-dir-02.md5
  • etc

Gostaria de restaurar a estrutura de diretórios com base nos arquivos .md5. Então, eu tenho algo como:

  • J: \ To_Sort \ Selected-Dir-01 \ todos os diretórios & arquivos que estavam originalmente aqui
  • J: \ To_Sort \ Selected-Dir-02 \ todos os diretórios & arquivos que estavam originalmente aqui
  • J: \ To_Sort \ Selected-Dir-03 \ todos os diretórios & arquivos que estavam originalmente aqui

Aqui está o conteúdo de um arquivo md5:

D754CEE4296B03062E53EA0FF7859F53 *photos\Foley_At_141_-_14-04-2009\small-psd\DSC_7975 copy.psd

A primeira seção é uma soma de verificação, seguida por um espaço. Em seguida, o asterisco indica o início da estrutura do diretório e do caminho do arquivo. Um CR indica uma nova linha no arquivo MD5. Os arquivos MD5 foram criados pela edição da linha de comando FastSum

Encontrei algo aqui isso poderia levar a uma solução. (Eu não estou muito familiarizado com Ruby, mas agora estou dissecando o código.)

Comecei a pensar em soluções e acho que estou supercomplicando isso. (Escrevendo uma macro no UltraEdit para remover os valores de CRC do .md5s, substitua o asterisco pelo caminho do diretório de destino e, em seguida, grave um arquivo de lote ... Tenho certeza de que existe uma solução melhor.)

Tenho o OS X Snow Leo (com o Xcode) & Windows XP Home.

EDITAR: Como codelahoma muito corretamente apontou, eu esqueci de mencionar que os nomes dos arquivos e a estrutura da pasta estão intactos. (Eles são os mesmos que estão listados nos arquivos .MD5)

Então essa era a estrutura original (que eu gostaria de recuperar):

J:\To_Sort\Selected-Dir-01\photos\Foley_At_141_-_14-04-2009\small-psd\DSC_7975 copy.psd

Esta é a estrutura atual:

J:\To_Sort\photos\Foley_At_141_-_14-04-2009\small-psd\DSC_7975 copy.psd

Caracteres permitidos no nome do arquivo e na extensão: de acordo com o padrão ISO9660 / Joliet (Modo 2).

Sou eternamente grato por uma solução!

    
por b-varga 28.12.2013 / 17:18

1 resposta

0

awk 'BEGIN { FS=" \*|\\" }
           { print gensub(".md5","", "1", FILENAME) "\" $2 }' *.md5 |
  sort -u |
  while read -r line; do echo mv "${line#*\}" "${line%\*}"; done

Saída dos dados de exemplo que você forneceu:

mv photos selected-dir-01

Remova o "echo" de antes de "mv" se a saída parecer boa.

edit: Ah, e faça os diretórios para as coisas serem movidas, é claro:

for f in *.md5;do mkdir "${f%.md5}";done
    
por 29.12.2013 / 04:43