폴더에서 파일을 복사하고 새 파일 이름에 md5sum을 추가하는 스크립트

폴더에서 파일을 복사하고 새 파일 이름에 md5sum을 추가하는 스크립트

이것이 가능한지 알고 싶습니다.

.mov내 폴더에 파일이 너무 많아요. 파일을 별도의 폴더에 복사할 수 있지만 새 파일 이름에 실제 이름 뒤, 파일 확장자 앞에 md5sum을 포함시키는 것이 가능한지 궁금합니다. 예를 들어 파일 중 하나의 이름이 지정된 경우 johnnycash.mov다음과 같이 표시되기를 원합니다. johnnycash_8cbda72b2ce62f4a69a0b454ccccbe4.mov

나는 멍청한 놈이고 이런 종류의 일은 내 수준보다 약간 높을 수 있지만 누구든지 작동하는 솔루션이 있으면 감사하겠습니다.

건배!

답변1

이 문제는 다음 두 단계로 해결하는 것이 가장 좋습니다.

  1. 새 폴더에 파일 복사
  2. md5sum을 기반으로 이름을 바꿉니다.

1단계는 간단합니다.

cp -r folder_with_movs new_folder

2단계에는 몇 가지 스크립팅이 필요합니다.

cd new_folder
for i in *.mov; do
    bn="${i%.*}"
    ext="${i##*.}"
    md5=$(md5sum "$i" | awk '{ print $1 }')
    mv -v "$i" "${bn}_${md5}.${ext}"
done

답변2

확장자 ".mov"만 있으므로 가능한 모든 확장자를 캡처하는 것보다 쉽습니다.

for file in *.mov; do
 SUM=$(md5sum "$file" | awk '{print $1}')
 cp "$file" <destination>/$(echo "$file" | sed -e "s/.mov/_${SUM}.mov/")
done

모든 mov 파일을 반복합니다.

md5sum을 계산하고 출력에서 ​​첫 번째 열만 가져옵니다. (이 awk 문은 항상 유용합니다. 이제 보셨을 것입니다.)

일부 이름을 변경하여 파일을 새 대상에 복사합니다. sed는 접미사 ".mov"를 문자열 "_", md5sum, 확장자 ".mov"로 바꾸므로 보존됩니다.

파일 이름에 공백이 있는지 주의하세요. 공백을 피하는 것이 가장 좋습니다.

답변3

비슷한 것이 효과가 있을 수 있습니다. 매우 조잡하지만 파일 이름에 md5sum을 사용하여 항목을 이동합니다.

#!/bin/bash

CURRENTDIRECTORY=xxx
NEWDIRECTORY=xxx

for i in `ls $CURRENTDIRECTORY`; do
    if [ -f $i ]; then
        md5=`md5sum $i | awk '{print $1}'`
        name=$md5-$i
        cp $i $NEWDIRECTORY/$name
    fi
done

관련 정보