Я прошу помощи относительно некоторых сценариев.

У меня есть каталог "J:\To_Sort", который содержит еще 1164 каталогов. Внутри каталога "To_Sort" у меня также есть 37 * .md5 файлов. Эти файлы MD55 содержат контрольную сумму и исходные пути к каждому отдельному файлу и каталогу. Они названы:

  • выбран-Dir-01.md5
  • выбран-Dir-02.md5
  • так далее

Я хотел бы восстановить структуру каталогов на основе файлов .md5. Так что я бы хотел что-то вроде:

  • J:\To_Sort\Selected-Dir-01\ все каталоги и файлы, которые были здесь изначально
  • J:\To_Sort\Selected-Dir-02\ все каталоги и файлы, которые были изначально здесь
  • J:\To_Sort\Selected-Dir-03\ все каталоги и файлы, которые были изначально здесь

Вот содержимое файла md5:

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

Первый раздел - это контрольная сумма, за которой следует пробел. Затем звездочкой обозначено начало структуры каталогов и путь к файлу. CR обозначает новую строку в файле MD5. MD5 файлы были созданы с помощью командной строки FastSum

Я нашел здесь кое-что, что могло бы привести к решению. (Я не слишком знаком с Ruby, но сейчас разбираю код.)

Я начал думать о решениях, и я думаю, что я усложняю это. (Запись макроса в UltraEdit для удаления значений CRC из .md5s, замена звездочки на путь к каталогу назначения, затем запись пакетного файла ... Я уверен, что есть лучшее решение.)

У меня OS X Snow Leo (с Xcode) и Windows XP Home.

РЕДАКТИРОВАТЬ: Как справедливо отметил codelahoma, я забыл упомянуть, что имена файлов и структура папок не повреждены. (Они такие же, как они перечислены в.Файлы MD5)

Итак, это была оригинальная структура (которую я хотел бы восстановить):

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

Это текущая структура:

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

Допустимые символы в имени файла и расширении: согласно стандарту ISO9660/Joliet (режим 2).

Я вечно благодарен за решение!

1 ответ1

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

Вывод из данных примера, который вы дали:

mv photos selected-dir-01

Удалите "echo" перед "mv", если вывод выглядит хорошо.

редактировать: О, и сделать каталоги для вещей, которые будут перемещены, конечно:

for f in *.md5;do mkdir "${f%.md5}";done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .