빈 디렉토리를 제거하려고 할 때 왜 "Directory not empty"가 표시됩니까?


37

이 빈 디렉토리가 있지만 다음과 같은 오류 메시지가 계속 나타납니다.

Cannot remove test: Directory not empty

나는이 질문이 여러 번 요청되었지만 그들 중 어느 것도 도움이되지 않았다는 것을 안다.

ls -la숨겨진 파일이 없는지 확인 하려고 시도했지만 보이지 않는 것 같습니다. 여기에 이미지 설명을 입력하십시오

나는 sudo rmdir test뿐만 아니라 시도했지만 sudo rm -rf test나는 무엇이 잘못되었는지 모른다.

파일 시스템에 문제가있을 수 있지만 어떻게 수정해야할지 모르겠습니다.


시도sudo fsck /
아이크

2
일반 디렉토리 또는 마운트 지점입니까? 마운트 포인트 인 경우 삭제하기 전에 마운트 해제해야합니다. 일반 디렉토리 인 경우, 때때로 열린 핸들이있을 경우이 문제점이 발생할 수 있습니다. 컴퓨터를 한 번 재부팅하고 삭제하십시오.
vembutech

@rbrick test로그인 사용자 이름입니까? 출력은 echo $USER무엇입니까? 그리고 무엇 echo $HOME?
αғsнιη

1
혼란스러워 왜 사용자에게 디렉토리에 대한 실행 권한이 없지만 그룹이 있습니까?
줄리안 스털링

답변:


36

외장 하드 디스크에서 동일한 문제가 발생하여 명령 줄을 사용하여 여러 가지 방법을 시도했지만 매번 실패했습니다. 그것이 나를 위해 일한 것입니다.

  1. 폴더를 마우스 오른쪽 버튼으로 클릭
  2. 휴지통으로 이동
  3. 텅 빈 쓰레기통

예, 어리석지 만 나를 위해 일했습니다. (어떻게 왜 그런지 모르겠지만 폴더가 더 이상 존재하지 않습니다)


나는 같은 문제를 겪었고 당신의 대답은 효과가 있습니다. 바보 같은 일이 무엇인지, 왜 "-rf"가 비어 있지 않은 폴더를 제거하지 못한 지 잘 모르겠습니다.
artm

3
여기서 무슨 일이 있었나요? 왜 효과가 있었습니까?
Sahil Arora

어떻게 된 거예요? 솔직히 모르겠다. 폴더의 파일이 어떤 이유로 손상되었을 수 있습니다. "is-empty"와 같은 플래그 또는 "how-many-file-inside"와 같은 파일 카운터가 잘못된 값으로 설정되었습니다. 때때로, 이와 같은 오류는 하드 디스크의 손상으로 인해 발생할 수 있습니다. 왜 효과가 있었습니까? 나는 명령이 어떻게 구현되는지 모르지만 (C에 대해 생각하십시오), 비우는 동안 (파일 카운터가 0보다 크면 "오류 : 디렉토리가 비어 있지 않음"인 경우) 플래그 및 카운터를 확인합니다. 휴지통은 폴더와 모든 파일 및 하위 폴더를 확인하지 않고 직접 제거합니다.
Marco Ottina

파일 시스템에서 폴더의 노드를 제거하면 해당 단일 링크 노드 만 제거되고 폴더가 비어 있어야 다른 파일 노드가 없어지기 때문에 명령 줄을 통해 폴더를 삭제하면 폴더의 공허함과 같은 조건이 필요할 수 있습니다. "폴더로 표시되는 중간 링크가 없어 파일 시스템을 통해) 카운터와 같은 것들 (따라서 점검이 수행되지 않음)
Marco Ottina

1
필자의 경우 하위 디렉토리가 Mac에서 Linux VM으로 공유 된 폴더에 있었고 Linux VM 측에서 폴더를 삭제하려고했습니다. 맥 쪽이 일부 폴더를 잡고 있었던 것 같습니다. 을하는 rm -rf맥 측에서하는 일했다.
MindJuice

5

10 + 우분투 듀얼 시스템이 설치되어 있습니다. 그리고 두 시스템 모두 Windows Paritition을 공유합니다.

최근에는 우분투에서 해당 파티션의 빈 폴더를 삭제할 수 없었습니다. 리눅스에서 해결하기위한 솔루션을 찾을 수 없습니다.

그러나, 내가 창으로 전환하고 실행 한 후

chkdsk

cmd대상 디스크 를 통해 . 일부 오류가 체크 아웃되었습니다. 그런 다음 실행

chkdsk /F

디스크 오류를 수정합니다.

완료 후 지금 해당 폴더를 삭제할 수 있습니다.


2
이 방법은 저에게 효과적입니다. 공유 파티션은 NTFS 형식이며 아마도 손상되었을 수 있습니다.
krismath

4

을 입력하여 삭제할 수 sudo rm -rf {dir_name}있습니다. 디렉토리가 읽기 전용 권한으로 설정되었을 수 있습니다. 주어진 명령으로 폴더를 삭제할 수 있기를 바랍니다.


Directory not empty어쨌든 나는 얻는다 . 이상하게 보이므로 증명하기 위해 화면을 녹화했습니다.
naXa

디렉토리에 내용이 있고 하위 디렉토리가있는 경우에도 대답의 해당 명령이 작동합니다.
울버린


이 이상한 동작은 NTFS 파티션의 오류로 인해 발생했습니다. 로 해결되었습니다 chkdsk /F.
naXa

4

디렉토리가 비어 있지 않기 때문에 디렉토리를 제거 할 수없는 동일한 문제가 있습니다.

이 일련의 작업은 저에게 효과적이었습니다.

  1. 명령 행부터

    sudo rmdir  --ignore-fail-on-non-empty folder-name-to-be-deleted
    

위의 명령은 우분투가 디렉토리가 비어 있지 않은 것을 무시하도록 도와줍니다.

  1. 그런 다음 폴더와 Shift + Del로 이동하면됩니다.

3

GUI 솔루션

  1. 폴더를 휴지통으로 이동하거나 잘라내어 붙여 넣기
  2. 쓰레기통을 비워

끝났습니다.

명령 줄 솔루션

sudo mv folder_error/ .local/share/Trash

trash-cli로 휴지통을 비울 수 있습니다.

sudo rm -fr ~/.local/share/Trash/*

1
커맨드 라인 솔루션은 실제로 일반적인 솔루션이라고 생각합니다. 빈 폴더를 다른 위치로 옮기고 이동 한 후에는 제거하십시오. 예를 들어 이와 같은 것 mkdir a ; mv test a/ ; rm -rf a/test ; rm -rf a입니다. 그와 같은 접근 방식이 나를 위해 효과가 있었지만 (왜 그런지 모르겠지만) 루트 액세스가 필요하지 않았습니다.
Jake Fisher

2

디렉토리가 CIFS (일명 삼바)로 마운트 된 파일 시스템의 일부이고 깨진 심볼릭 링크 인 파일을 포함하는 경우 해당 파일 ls을 언급하지 못합니다. ( 14.04.2 LTS를 실행하는 CIFS 클라이언트와 12.04.5 LTS를 실행하는 서버 에서이 버그가 관찰 되었습니다.)

따라서 디렉토리는 비어 있지 않지만 CIFS를 통해 볼 수는 없습니다. 파일은 해당 파일 시스템을 호스팅하는 파일 서버에서 실행되는 명령을 통해서만 볼 수 있으므로 삭제할 수 있습니다.


2

btrfs를 사용하는 경우 i_size가 0이 아닌 빈 디렉토리 일 수 있습니다. 다음과 같은 경우에 해당되는지 확인할 수 있습니다.

stat -c %s test

btrfs에서 빈 폴더의 i_size는 0이어야합니다. 제 경우에는와 6160을 얻었습니다 ~/.config/chromium/Default.

제안 된 솔루션은 파일 시스템을 마운트 해제하고 btrfs check문제를 확인하기 위해 실행 한 후 문제가있는 다른 디렉토리를 확인한 다음 btrfs check --repair수정하여 실행 하는 것입니다. 그러나이 작업은 위험하므로 먼저 파일을 백업하는 것이 좋습니다.

출처 : Btrfs 문제 FAQ


1

우분투 16.04에서 동일한 문제가 있었고 다음과 같이 수정했습니다.

  1. 휴지통 비우기
  2. 재부팅

파일 관리자를 열고 닫는 것은 좋지 않았으며 재부팅 만 가능했습니다.


0

이 명령을 시도하십시오 :

sudo lsof | grep deleted 

디렉토리가 여전히 사용중인 경우 목록을 확인하십시오. :디

그렇다면 서비스를 중지하면 디렉토리를 삭제할 수 있습니다.


디렉토리를 삭제할 수없는 경우 열려있는 삭제 된 파일 디스크립터 목록에 디렉토리가 표시되지 않습니다. ;-]
David Foerster

0

해당 폴더 나 파일이 완전히 복사되지 않은 경우이 문제가 나타납니다. 입력 / 출력 오류입니다. Shift+ Del또는 명령을 통해 삭제하려고 시도했지만 작동하지 않았습니다. 마우스 오른쪽 버튼을 클릭하고 "휴지통으로 이동"을 시도했는데 효과가있었습니다.

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