
폴더에 알파벳 문자가 아닌 문자 등이 포함된 .jpg 파일이 많이 있습니다 ! , ( ) ^ & .
.
A-Z a-z 0-9
그렇지 않은 것은 아무것도 아닌 것으로 대체 되도록 파일 이름을 바꿔야 합니다 . 또한 공백은 .mp4$$$.jpg로 끝나는 파일로 대체되어야 하며 -
이 부분은 그대로 유지되어야 합니다.
예를 들어 파일이 호출되는 경우
ask me anything.mp4001.jpg
ask, me. anything! 2.mp4001.jpg
파일 이름은 다음으로 변경되어야 합니다.
ask-me-anything.mp4001.jpg
ask-me-anything-2.mp4001.jpg
답변1
Bash를 사용하면 다음과 같이 할 수 있습니다.
for f in *.jpg
do
if [[ $f =~ ^(.*)(\.mp[[:digit:]]+\.jpg) ]]
then
prefix=${BASH_REMATCH[1]}
suffix=${BASH_REMATCH[2]}
prefix=${prefix//[^[:alnum:] ]/}
prefix=${prefix// /-}
echo mv -- "$f" "${prefix}${suffix}"
fi
done
이는 파일을 반복 하고 각 파일 이름을 (anything) 다음에 (one or more digits) *.jpg
패턴과 일치시키려고 시도합니다 . 파일 이름이 일치하면 이름을 바꾸기 위해 분리합니다. 접미사에는 마침표가 포함되어 있으므로 접두사에서 마침표를 제거하기 위해 별도로 저장합니다. 영숫자 또는 공백이 아닌 모든 항목을 제거한 후 모든 공백을 대시로 바꿉니다. 그런 다음 명령에 대해 파일 이름이 재구성됩니다 . 결과가 정확해 보이면 제거하세요 ..mp
.jpg
mv
echo
원래 파일 이름에 대시를 유지하려면 마지막 두 prefix
할당을 다음과 같이 바꾸세요.
prefix=${prefix// /-}
prefix=${prefix//[^[:alnum:]-]/}