! , ( ) ^ & .
알파벳이 아닌 문자 등이 포함된 폴더에 .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
*.jpg
이는 파일을 반복 하고 각 파일 이름을 다음 패턴과 일치시키려고 시도합니다: (anything) 다음에 .mp
(one or more number) .jpg
. 파일 이름이 일치하면 압축을 풀고 이름을 바꿉니다. 접미사에는 마침표가 포함되어 있으므로 접두사에서 마침표를 제거하기 위해 별도로 저장합니다. 영숫자 또는 공백이 아닌 모든 항목을 제거한 후 모든 공백을 대시로 바꿉니다. 그런 다음 명령의 파일 이름을 재구성하고 mv
결과 echo
가 올바른 것으로 보이면 삭제하십시오.
원래 파일 이름에 대시를 유지하려면 마지막 두 할당을 prefix
다음으로 바꾸십시오.
prefix=${prefix// /-}
prefix=${prefix//[^[:alnum:]-]/}