아무것도 없는 파일에서 알파벳 및 숫자가 아닌 문자의 이름을 바꿉니다.

아무것도 없는 파일에서 알파벳 및 숫자가 아닌 문자의 이름을 바꿉니다.

폴더에 알파벳 문자가 아닌 문자 등이 포함된 .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.jpgmvecho

원래 파일 이름에 대시를 유지하려면 마지막 두 prefix할당을 다음과 같이 바꾸세요.

prefix=${prefix// /-}
prefix=${prefix//[^[:alnum:]-]/}

관련 정보