이것이 가능한지 알고 싶습니다.
.mov
내 폴더에 파일이 너무 많아요. 파일을 별도의 폴더에 복사할 수 있지만 새 파일 이름에 실제 이름 뒤, 파일 확장자 앞에 md5sum을 포함시키는 것이 가능한지 궁금합니다. 예를 들어 파일 중 하나의 이름이 지정된 경우 johnnycash.mov
다음과 같이 표시되기를 원합니다.
johnnycash_8cbda72b2ce62f4a69a0b454ccccbe4.mov
나는 멍청한 놈이고 이런 종류의 일은 내 수준보다 약간 높을 수 있지만 누구든지 작동하는 솔루션이 있으면 감사하겠습니다.
건배!
답변1
이 문제는 다음 두 단계로 해결하는 것이 가장 좋습니다.
- 새 폴더에 파일 복사
- 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