중복 가능성:
파일 확장자를 정리하려면 어떻게 해야 합니까?
CentOS를 사용하고 있습니다. 하나의 폴더에 천만 개가 넘는 이미지가 있고 하위 디렉터리로 그룹화되어 있습니다.
문제는 내 이미지 중 일부 이름이 abc라는 것입니다..jpg다른 것들은 xyz로 명명됩니다.JPG. 따라서 xyz.jpg에 액세스하려고 하면 확장자가 대소문자를 구분하기 때문에 "파일을 찾을 수 없습니다"라고 표시됩니다.
이 문제를 해결하기 위해 모든 JPG
이름을 바꾸 jpg
거나 httpd 구성을 바꿀 수 있는 방법이 있습니까?
답변1
다음을 시도해 보세요(이렇게 하면 이 파일을 실행하는 디렉터리의 모든 하위 디렉터리에서 모든 .JPG 파일의 이름이 반복적으로 .jpg로 변경됩니다).
find . -name '*.JPG' -exec sh -c 'mv "$0" "${0%.JPG}.jpg"' {} \;
find는 현재 디렉터리와 그 하위 디렉터리에서 *.JPG라는 이름의 모든 파일을 검색하고 목록을 mv 명령에 전달하여 이름을 바꿉니다.
답변2
이와 같은 질문과 답변에는 언제나 그렇듯이 다음 사항에 유의하시기 바랍니다.
find . -name '*.JPG' -exec sh -c 'mv "$0" "${0%.JPG}.jpg"' {} \;
대부분의 사람들에게는 잘 작동하지만 어떤 경우에는 보안 문제로 이어질 수 있는 문제가 있기 때문에 공개적으로 광고하는 것은 위험합니다.
그러면 파일과 디렉터리의 이름이 변경됩니다. 디렉토리 이름을 바꾸면 그 안에 있는 파일의 이름은 바뀌지 않습니다(-깊이 옵션 사용).
파일이 손실되거나(foo.JPG가 foo.jpg로 이름이 바뀌고 foo.jpg가 이미 존재함) 파일을 원하지 않는 위치에 저장할 수 있습니다(예를 들어 foo라는 파일이 있는 디렉토리를 고려). .JPG 파일이고 foo.jpg라는 파일은 실제로 /etc/apache2/conf.d에 대한 심볼릭 링크이므로 공격자가 사용자를 속여 파일 이름을 바꾸도록 할 수 있습니다.
이러한 문제 중 대부분은 처음부터 다시 시도하는 대신 해당 작업을 위해 특별히 설계된 도구(파일 이름 일괄 변경)를 사용하면 피할 수 있습니다. zsh의 mmv와 zmv를 생각했습니다.