아이폰/아이패드/비전프로에서 윈도우로 파일 전송했을 때 파일명 깨지는 문제 해결법 : 클리앙

이 글은 기본적으로 맥 쓰시는 분이라면 많이들 아시는 얘기입니다. 'convmv'로 검색하시면 관련 게시물이 꽤 많이 나오죠. 그런데 아이폰/아이패드/비전프로에서는 추가적인 노하우가 필요합니다. OS에서 자체적으로 터미널을 지원하지 않기 때문이죠. 


주의: 이 글은 터미널 명령어에 대한 기초적인 지식이 있는 분이 아니면 이해하기 어려울 수 있습니다.


1) a-Shell 앱 설치


앱 설치는 앱스토어에서 하시면 됩니다. iOS 등에서 쓸 수 있는 서드파티 터미널 앱은 여러 종류가 있는데,아이폰아이패드비전프로에서윈도우로파일전송했을때파일명깨지는문제해결법클리앙 리눅스 PC를 에뮬레이트하는 게 아니라 애플의 아키텍처를 그대로 사용할 수 있는 대표적인 터미널 앱으로 a-Shell 이라는 게 있습니다. 용량이 꽤 커서 다이어트 버전인 a-Shell Mini 앱도 있지만, convmv 명령어 쓰려면 이걸로는 안 되고 a-Shell 풀버전이 필요합니다. convmv가 perl 스크립트인데 풀버전에서만 perl이 되거든요.


2) convmv 설치


* a-Shell 앱을 실행시켜서 bin 디렉토리를 새로 만들어 줍니다.


mkdir ~/Documents/bin

cd ~/Documents/bin


또는 Files 앱에서 a-Shell 디렉토리에 bin 폴더를 만들어 주시면 됩니다.


convmv 명령어는 아래 링크에서 받으시면 됩니다:


https://github.com/skangas/home-bin/blob/master/convmv


소스코드를 다운로드하면 파일이름이 convmv.txt 였던가 그럴 텐데, Files 앱에서건 a-Shell 명령어로건 확장자를 없애 주세요. 이걸 좀 전에 만들었던 bin 폴더에 옮겨 주시면 일단은 설치 끝입니다. 파일 속성 같은 건 신경 끄셔도 되고, PATH 설정도 이미 ~/Documents/bin 경로가 기본값으로 설정되어 있습니다. 이곳에 있는 파일의 첫 줄에 스크립트인 것이 선언되어 있으면 그냥 실행파일처럼 동작해요.


참고로 a-Shell에는 git 명령어를 대신하는 lg2 명령어가 있습니다. lg2 clone 주소 뭐 이런 식으로 사용하시면 되는데, 위에 링크한 주소를 그대로 쓰시면 안 되고 .git 확장자 달린 주소를 따야 하는데 이거 어떻게 하는지 저는 잘 모르겠습니다. 저는 개발자가 아니라서요;


3) convmv 소스 코드 일부 수정


그냥 원본 소스 그대로도 기본적인 작동은 하는데, 한글 파일 이름이 조금만 길어도 너무 길다면서 튕기던데요. 소스 파일을 텍스트 편집기로 열어서 아래 부분을 수정해 주시면 됩니다:


$maxfilenamelength=255;


파일 이름이 256 바이트 미만이어야 한다는 의미로 이렇게 되어 있던데, 511 정도로 수정하면 좋습니다. 텍스트 편집기는 a-Shell 앱에 vim 내장이니까 이걸 쓰셔도 되고, vim이 싫으시면 다른 앱을 쓰셔도 됩니다.


4) a-Shell용 셸 스크립트 작성


~/Documents/bin 폴더에 cv 명령어를 만들어 줍니다:


#!/usr/bin/env sh

convmv -f utf8 -t utf-8-strict --nfc --notest --exec "mv #1 #2.convmv" ./*.

*

# Loop through all files with the *.convmv pattern

for file in *.*.convmv; do

  # Check if the file exists to avoid errors

  if [ -e "$file" ]; then

    # Create the new filename by removing the .convmv part

    new_name="${ file%.convmv}"

    

    # Rename the file

    mv "$file" "$new_name"

    echo "Renamed: $new_name"

  fi

done


이것도 역시 chmod 명령어 같은 거 쓰실 필요 없고, 첫 줄에 #!/usr/bin/env sh 요 부분이 중요합니다. 이게 있어야 셸 스크립트로 인식해요. a-Shell 앱은 bash가 안 돼서 dash가 기본인 것도 참고하세요.


참고사항: 


위의 셸 스크립트는 --replace 옵션 대신 셸 명령어를 실행하는 --exec 옵션을 사용해 .convmv 확장자를 추가로 붙여서 파일 이름을 변경한 다음, mv 명령어로 .convmv 확장자를 도로 떼어내는 식으로 짜여져 있습니다.


macOS에서는 이렇게 복잡하게 할 거 없이 그냥 요런 식으로 한 줄짜리 명령이면 되는데요:


convmv -f utf8 -t utf-8-strict --nfc --notest --replace ./


그와 달리 a-Shell에서는 일단 --replace 옵션이 안 먹고, 마지막에 와일드카드 없이 현재 디렉토리만 지정하는 식으로는 작동하지 않습니다.

--replace 옵션이 안 먹는다는 건 정확히는 파일이 삭제되어 버리는 건데요;; 

iOS 등에서 파일 이름을 처리하는 방식이 macOS와 다르기 때문인 듯하다고 a-Shell 앱 개발자가 말하더군요.

즉 변환 전 파일 이름(NFD 인코딩)과 변환 후 파일 이름(NFC 인코딩)을 iOS 등에서는 동일한 이름으로 인식하는 거죠.


5) 사용법:


* 파일명 변경이 필요한 디렉토리로 이동한 다음 cv 명령을 내려 주면 됩니다. 

* a-Shell 앱 내부 디렉토리가 아닌 다른 곳으로 이동하려면 pickFolder 명령을 사용하면 Files 앱이 떠서 폴더를 선택하는 식으로 디렉토리 이동이 됩니다.

* ~Documents 등의 상대 경로가 아닌 절대 경로를 알아내려면 pwd -P 명령을 사용하시면 됩니다.

* alias 설정하시려면 ~Documents 디렉토리에 .bashrc 파일을 작성하시면 됩니다.

* 터미널을 사용하려면 터미널용 파일 매니저가 필요하실 수도 있는데요, a-Shell에서는 되는 게 없다시피하고 예외적으로 vim에서 NERDTree 플러그인을 설치하면 꽤 잘 작동합니다. vim 기본 netrw도 되기는 합니다. 다만, vim 플러그인 설치하는 건 일반적인 방법으로는 안 되고 아래 링크 참고하세요:

https://bianshen00009.gitbook.io/a-guide-to-a-shell/basic-tutorials/configure-your-vim



마지막으로 본문과 별 상관 없지만, a-Shell 앱 설치하신 김에 다른 활용법 소개

유튜브 비디오를 a-Shell 앱으로 다운로드하는 법:

https://www.reddit.com/r/VisionPro/comments/1eaqk7j/tip_how_to_download_a_youtube_video_with_siri/


유용한사이트