[macos] 모든 파일의 이름을 소문자로 바꾸려면 어떻게합니까?

예를 들어 TREE.wav, ONE.WAV가 있습니다. 이름을 tree.wav, one.wav로 바꾸고 싶습니다. 모든 파일의 이름을 소문자로 바꾸려면 어떻게합니까?



답변

터미널에 익숙한 경우 :

  1. Terminal.app을 열고 cd이름을 바꿀 파일이있는 폴더를 입력 한 다음 끌어서 창에 놓습니다.
  2. 올바른 디렉토리에 있는지 확인하려면 입력 ls하고 Enter 키를 누르십시오.
  3. 이 코드를 붙여넣고 Enter를 누르십시오.

    for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
  4. 모든 파일이 소문자인지 확인하려면 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


답변