모든 파일에 .jpg 확장자를 지정하십시오


8

디렉토리가 있고 파일 확장자 중 일부가 소문자 대신 대문자 (.JPG)입니다.

모든 파일의 확장자가 .jpg인지 확인하고 싶습니다. 쉘 프롬프트에서 어떻게해야합니까?


리눅스에 AppleScript가 없다는 것은 부끄러운 일입니다.
gadgetmo

2
리눅스에는 AppleScript가 없습니다.
math

답변:


15

사용 쉘 매개 변수 확장을 :

for f in *.JPG; do
    mv "${f}" "${f%%.JPG}.jpg"
done

"사진은 종종처럼 문자, 공백이 포함 된 파일 이름의 처리됩니다.


5
+1이 솔루션은 파일 이름에 공백이 있지만 "f"대신 "$ f"를 의미하는 경우에도 작동합니다.
Adam Zalcman 2019

셸 매개 변수 확장은 약간 암호화되어 있으므로 기본 이름을 대신 사용할 수 있습니다. f in * .JPG; mv "$ f" "`기본 이름 $ f .JPG`.jpg"; 완료
math

@math : 공백이 포함 된 파일 이름으로 작동하고으로도 작동하므로 내 버전을 선호합니다 /path/to/*.JPG. 당신은 물론, 자신의 답변을 제출하실 수 있습니다 :)
Johnsyweb

물론 basename은 주요 디렉토리를 제거하지만 파일 이름 내부의 공백으로 작동합니다. (나는 이것이 답변의 가치가 있다고 생각하지 않는다. 그래서 나는 그것을 의견으로 올렸다)
math

10

bash뿐만 아니라 외부 도구를 사용할 수 있다면 rename명령을 확인하십시오 !

rename .JPG .jpg *

rename일부입니다 util-linux.


이름 바꾸기가 ... 문제가 있습니다. perl동일한 작업을 수행하기 위해 다른 인수를 허용하는 이름 바꾸기 버전이 있습니다 .
cha0site

좀 더 설명해 주시겠습니까? 어떤 버전의 BTW?
math

3

파일 이름에 공백이있는 경우 :

for f in *.JPG; do [[ -f "${f}" ]] && mv "${f}" "${f/%JPG/jpg}"; done

2

나는 그 mmv명령을 살펴볼 것을 제안한다 . 이런 종류의 작업에 적합합니다. 시나리오에서 다음과 같습니다.

#> mmv "*.JPG" "#1.jpg"

매뉴얼 페이지 예제로 가득하다, 그래서 그것에 익숙해 할 시간이 필요하지 않습니다.

데비안 시스템 그것은 설치할 수 있습니다 :

#> aptitude install mmv

0

파일 이름에 공백이없는 경우 :

for f in *.JPG; do mv $f `echo $f | sed 's/JPG$/jpg/'`; done

1
이름에 공백이있는 파일에 대해이 작업을 수행하기에 충분할 것 mv입니다. 두 인수에 큰 따옴표를 추가하십시오 .
Adam Zalcman

공백이 없습니다. CURRENT 디렉토리에서이 작업을 수행하기 위해 무엇을 추가해야합니까? 현재 오류가 발생했습니다-mv : stat`* .JPG '통계 : 해당 파일 또는 디렉토리가 없습니다
Mark Flint

1
거기에 JPG가 없습니다.
Karoly Horvath
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.