외장 드라이브, 휴지통을 비울 수 없음, rm은 파일을 보지만 ls -la는


9

외장 드라이브의 음악 폴더를 지우고 시도한 내용과 상관없이 삭제할 수없는 디렉토리를 찾았습니다.

GUI를 통해 휴지통에 넣으면

"폴더"항목이 사용 중이므로 작업을 완료 할 수 없습니다.

rm -rf터미널을 통해 제거하는 경우

$ rm -rf folder/
rm: folder/: Directory not empty

ls -la내용을 확인 하는 데 사용 하는 경우

$ ls -la
total 512
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

rm -i *폴더 내에서 사용 하면

$ rm -i *
rm: 03 - Ēlusion.mp3: No such file or directory

sudo lsof +D folder/파일이 열려 있는지 확인 하는 데 사용 하는 경우

프로그램 종료시 아무것도 반환되지 않습니다.

디스크 유틸리티를 사용하여 디스크와 볼륨을 복구 (응급)하는 경우

상태 점검이 통과되어 수리가 시작되지 않았습니다.

macOS를 재부팅하면

문제가 지속됩니다.

추가 정보:

  • 드라이브 내에서 폴더를 이동할 수 있지만 다른 드라이브로는 이동할 수 없습니다.

  • 폴더 이름을 바꿀 수 있습니다.

  • ls -i *.mp3ls: 03 - Ēlusion.mp3: No such file or directory와 같은을 반환합니다 rm -i *.mp3.

  • 파일이 Finder에 표시되지 않습니다. 혼란스러운 부분입니다. 터미널이 가질 수있는 파일 이름 표시 문제 (항상 사용하도록 설정 Unicode - UTF-8), 더 많은 힘이 작용한다고 생각합니다.

질문에 대한 답으로 ls -ib아무 것도 반환하지 않습니다.

$ ls -i
$ ls -ib
$ ls -laib
total 512
2762318 drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

파일 이름에 이상이있는 동안 분명히 뭔가 가 있지만 ls -la그것을 볼 수 없었 rm -i습니까?

get info GUI 컨텍스트 메뉴를 통해 폴더에 1 개의 항목이 있지만 바이트가 0이며 파인더에 표시되지 않는 것을 확인했습니다.

이 시점에서 어떻게해야할지 모르겠습니다. 대단히 감사합니다!

(외장 드라이브에서 10.13.4 + ExFAT 사용)


1
당신은 당신이 원하는 모든 것을 백업 고려-이미 어쨌든 백업 ... 다음 다시 시작하기 위해 해당 드라이브를 완전히 다시 포맷?
Solar Mike

ls -b파일을 보여줍 니까 ? 그렇다면 ls -biinode를 가져 와서 아래 답변을 따르거나 -b출력에 파일 이름을 복사하십시오 .
Reid

핵심 문제는 파일 이름이 아니며 ls -bi *.mp3OP에 표시된 것과 동일한 결과를 보여줍니다.
bitinn

답변:


10

folder 라는 디렉토리에있는 03-Ēlusion.mp3 파일로 인해 문제가 발생한 것으로 보입니다 .

Terminal.app는 파일 이름에 분음 부호를 렌더링 할 수 없으므로 가장 간단한 솔루션을 제공 할 수있는 범위를 벗어났습니다. 파일 이름을 숨겨서 실패를 숨 깁니다 (지금까지 나에게 들리지 않은 것) High Sierra의 /.file, /.volfs 및 64 비트 inode에 대한 변경 사항이 있을까요? 잠시만 기다리십시오. 질문을 편집하면 내가 잘못 이해했다고 말할 수 있습니다.) 어쨌든 파일의 존재는 아이러니 한 존재하지 않는 Finder의 경합. 분명히 그렇습니다. 이를 변경하는 방법은 다음과 같습니다.

먼저 파일의 inode 번호를 결정하십시오. Terminal.app에서 cd"folder"디렉토리로 이동하여 다음 명령을 실행하십시오.ls -i *.mp3

응답의 왼쪽 열에 제공된 inode의 숫자 문자열을 복사하십시오.

12345678 03 - E ̄lusion.mp3

이 명령을 입력하면 터미널이 올바르게 렌더링 할 수있는 이름으로 바뀝니다.

find . -inum 12345678 -exec mv {} deletemenow \;

-폴더 "폴더"에 "deletemenow"파일을 제공합니다.이 두 파일은 모두 가장 좋아하는 방식으로 처리 할 수 ​​있습니다.


와우, 그것은 매우 끔찍한 버그입니다.
chrylis

2
나는 이것이 정확하다고 생각하지 않습니다. 터미널은 렌더링 할 수없는 단일 문자 를 숨길 수 있지만 전체 텍스트 행을 제거하지는 않습니다.
duskwuff -inactive- 2

1
@duskwuff 어느 쪽이든 파일 이름이 문제를 일으키는 것으로 보이므로 이것이 잠재적 인 해결책입니다.
JAB

죄송하지만 문제는 이것보다 더 복잡한 것 : 나는 시도 $ ls -i *.mp3, 그것은 반환합니다 ls: 03 - Ēlusion.mp3: No such file or directory.
bitinn

1
ls -i쉘 와일드 카드 확장이 방해받지 않도록 디렉토리 내에서 실행할 수 있습니까 ?
nohillside

9

이 요약에 도달하는 데 시간이 오래 걸렸지 만 결정적인 답변이라고 생각합니다.

내 문제의 원인은 잘 알려진 것입니다 .

OS X는 파일 이름을 정규화 하고 더 일반적인 NFC 대신 NFD를 사용 한다는 점에서 이상 합니다.

역사적으로 (이전 10.11 이전 버전은 아님) OS X + HFS +는 모든 파일 이름에 NFD 형식을 적용하며 명령 및 시스템 호출에서만 NFD 결과를 얻습니다.

그런 다음 10.11에서 일부 시스템 호출 결과가 NFC로 정규화되어 Windows 및 Linux와 인라인으로 연결되지만 OS X에서 NFD를 기대하는 일부 프로그램을 손상시키는 비용이 발생합니다.

그러나 macOS 10.13 + AFPS가 도입 된 이후로 동작이 다시 변경됩니다. Apple은 디스플레이 및 시스템 호출 에서 NFD정규화하기 로 결정 하지만 원래 파일 이름은 그대로 둡니다 (NFC 및 NFD가 모두 지원되지만 선택한 경우) 파인더의 파일 이름 또는 ls터미널의 결과 복사 , NFD 형식)

exFAT를 사용하여 외부 드라이브에 NFD 파일 이름이있는 파일을 넣을 때까지 (4GB + 파일 크기를 지원하는 유일한 크로스 macOS / Windows 형식 이므로 ) macOS 10.13 파일이 NFC 형식이어야한다고 생각합니다. 버그가 발생했습니다.

사실, 여기 빠른 테스트가 있습니다. Windows의 exFAT 드라이브에 3 개의 파일이있는 폴더가 있습니다.

여기에 이미지 설명을 입력하십시오

  • test.mp3
  • Ēlusion.mp3( ĒNFC에서)
  • 03 - Ēlusion( ĒNFD에서)

( 여기서 정확한 유니 코드를 복사 할 수 있습니다 )

macOS에 마운트하면 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

ls -laib결과 :

$ ls -laib
total 46592
2762318 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 ..
1572961 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 Ēlusion.mp3
1572871 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 test.mp3

보시다시피 NFC 파일은 있지만 NFD 파일이 없습니다.

OS X 에서 NFC / NFD 문제를 알고 있더라도 exFAT 외장 드라이브가 반대 방향으로이 문제에 직면하지 않을 수 있습니다 (NFC는 양호하지만 NFD는 팬트 온 파이어).

그러나 내 음악 파일이 처음에 NFD 파일 이름을 사용하게 만든 원인은 무엇입니까?

  • 원래 NFD 파일 이름을 적용하는 이전 Mac과 함께이 음악 파일을 10.9 / 10.10에 다운로드했습니다.
  • 어느 시점에서 나는 NFC + NFD를 시행하지 않는 Windows + NTFS 드라이브로 옮기므로 원래 NFD 파일 이름이 유지됩니다.
  • 이제 exFAT 드라이브를 사용하여이 파일을 다시 macOS 10.13 + APFS로 옮기고 싶습니다 (exFAT는 NTFS와 동일한 UTF-16 규칙을 지원합니다).
  • 지옥이 풀려

네트워크 드라이브 나 TeamViewer를 통해 파일을 복사 할 수 있었지만 괜찮을 것입니다. 그러나 exFAT가 macOS에서이 버그를 유발하고 있습니다.

수업 :

  • 유니 코드 파일 이름은 여전히 ​​위협입니다.
  • 실제로이 문제를 해결하려면 Windows / Linux가 필요합니다 (파일이 exFAT 외장 드라이브에있는 경우).

@ bitlinn : duskwulff로 보낸 내 의견의 두 번째 링크를 클릭하고 거기에서 찾을 수있는 Apfelstrudel 유니 코드 정규화 도구를 사용해보십시오. exFAT로 무의미한 APFS에 매우 유용합니다. 아니면 ...?
Doc G.

1
@DocG. 이 문제는 처음에 생각했던 것보다 조금 더 복잡하지만 답변을 다시 업데이트했습니다!
bitinn

네, 그렇게 할 줄 알았어요 Error 36비 HFS 시스템에서 파일 속성 분리에 대한 자세한 내용은 "Windows mac error 36 앞뒤로 파일 이동"과 같은 내용에 대한 내 이전 의견을 참조 하고 웹 검색을 수행하십시오. 이것은 시스템 10.6이 도착한 이래로 알려진 또 하나의 MacOS / OS X 파일 명명 문제입니다. 유니 코드 정규화와 dot_underscore 특성 분리 사이에 이중 버그가 발생했습니다. dot_clean 명령이 기회가되었는지 의심합니다.
Doc G.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.