원래 디렉토리 구조를 복원하기 위해 .md5 파일을 기반으로 디렉토리 이동


0

스크립팅에 관한 도움을 요청합니다.

다른 1164 디렉토리를 포함하는 "J : \ To_Sort"디렉토리가 있습니다. "To_Sort"디렉토리 안에는 37 개의 * .md5 파일도 있습니다. 이 MD55 파일에는 체크섬과 모든 단일 파일 및 디렉토리의 원래 경로가 포함되어 있습니다. 그것들은 다음과 같이 명명됩니다 :

  • selected-dir-01.md5
  • selected-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 명령 행 버전 으로 작성되었습니다.

나는 해결책으로 이어질 수있는 것을 여기 에서 발견했다 . (루비에 익숙하지는 않지만 코드를 해부하고 있습니다.)

솔루션에 대해 생각하기 시작했고 솔루션이 너무 복잡하다고 생각합니다. (UltraEdit에서 매크로를 작성하여 .md5s에서 CRC 값을 제거하고 별표를 대상 디렉토리 경로로 바꾼 다음 배치 파일을 작성하십시오 ... 더 나은 해결책이 있다고 확신합니다.)

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) 표준에 따름.

나는 해결책에 영원히 감사합니다!


파일의 현재 위치와 파일 이름에 대해서는 설명하지 않았습니다. md5 파일에서 디렉토리 정보를 가져 오는 것은 매우 간단하지만 1 단계 일뿐입니다.
codelahoma

"해시 태그"는 완전히 다른 것입니다.
Daniel Beck

과연! 변경 사항을 반영하도록 게시물이 수정되었습니다.
b-varga

답변:


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

출력이 좋아 보인다면 "mv"전에 "echo"를 제거하십시오.

편집 : 아, 물론 물건으로 이동하기 위해 dirs를 만드십시오.

for f in *.md5;do mkdir "${f%.md5}";done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.