내용이 없는 파일에서 영숫자가 아닌 문자와 숫자의 이름을 바꿉니다.

내용이 없는 파일에서 영숫자가 아닌 문자와 숫자의 이름을 바꿉니다.

! , ( ) ^ & .알파벳이 아닌 문자 등이 포함된 폴더에 .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:]-]/}

관련 정보