예를 들어 TREE.wav, ONE.WAV가 있습니다. 이름을 tree.wav, one.wav로 바꾸고 싶습니다. 모든 파일의 이름을 소문자로 바꾸려면 어떻게합니까?
답변
터미널에 익숙한 경우 :
- Terminal.app을 열고
cd
이름을 바꿀 파일이있는 폴더를 입력 한 다음 끌어서 창에 놓습니다. - 올바른 디렉토리에 있는지 확인하려면 입력
ls
하고 Enter 키를 누르십시오. -
이 코드를 붙여넣고 Enter를 누르십시오.
for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
- 모든 파일이 소문자인지 확인하려면
ls
입력하고 다시 Enter 키를 누르십시오.
(몇 가지 수정 사항에 대해 트위터의 @bavarious에게 감사를 표하고 대소 문자를 구분하지 않는 파일 시스템에서 더 안전하게 만든 아래의 John Whitley에게 감사드립니다.)
답변
묻는 질문은 일반적이며 중요하므로보다 일반적인 답변을 제공하고자합니다.
가장 간단한 경우 (대부분의 경우 안전하며 Mac OS X에서는 계속 읽으십시오) :
for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done
파일 이름의 공백도 처리해야합니다 (모든 OS) :
IFS=$'\n' ; for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done
대소 문자를 구분하는 파일 시스템에서 대소 문자 만 다른 파일 이름을 안전하게 처리하고 대상 (예 : Linux)을 덮어 쓰지 않아야합니다.
for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; [ -e "$j" ] && continue ; mv "$i" "$j" ; done
Mac OS X에 대한 참고 :
Mac의 파일 시스템은 대소 문자를 구분하지 않고 대소 문자를 유지합니다.
허용 대답 및 의견 제안의 경우 만 다른 두 개의 파일 이름이 처음부터 존재하지 수 있기 때문에, 그러나, 필요, 임시 파일이 생성되지 것입니다 심판 .
이를 표시하려면 :
$ mkdir test
$ cd test
$ touch X x
$ ls -l
total 0
-rw-r--r-- 1 alexharvey wheel 0 26 Sep 20:20 X
$ mv X x
$ ls -l
total 0
-rw-r--r-- 1 alexharvey wheel 0 26 Sep 20:20 x
답변
어패류 버전 :
for old in *
set new (echo $old | tr '[A-Z]' '[a-z]')
mv $old $new
end