내부에서 간접적으로 디렉토리 삭제


9

내부에 디렉토리가 있습니다. 삭제하는 방법

~/.local/share/Trash/files$ ls devices/
reg-dummy
~/.local/share/Trash/files$ ls devices/reg-dummy/
subsystem
~/.local/share/Trash/files$ ls devices/reg-dummy/subsystem/
devices

또한

~/.local/share/Trash/files$ find devices/ | head -n 20
devices/
devices/reg-dummy
devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy

또한 뇌가 정지 문제를 해결할 수는 없지만 sudo rm -rf devices출력을 생성하지 않고 영원히 계속되는 것처럼 보입니다 .

~/.local/share/Trash/files$ sudo rm -rf devices
^C~/.local/share/Trash/files$

에 대해서도 마찬가지입니다 perl -e 'use File::Path qw(remove_tree); remove_tree("$ENV{HOME}/.local/share/Trash/files/devices")'. 에 대해서도 마찬가지입니다 du -s devices/. 대한 같은 일이 du -sch ~/.local/share/Trash/ 다른 명령

$ cd ~/.local/share/Trash/files/devices/reg-dummy/subsystem/devices/
$ ls -ldi 
8131921 drwxr-xr-x 3 theking theking 4096 Mar 17 19:43 .
$ cd reg-dummy/subsystem/devices/
$ ls -dli
8131926 drwxr-xr-x 3 theking theking 4096 Mar 17 19:43 .


$ find .local/share/Trash/files/ -maxdepth 1 -delete
find: cannot delete `.local/share/Trash/files/devices': Directory not empty
find: cannot delete `.local/share/Trash/files/': Directory not empty

난 내 쓰레기에 영원히 붙어 싶지 않아!

참고 :을 사용하여 컴퓨터의 원유 백업을 만들고 scp있었지만 공간이 부족 하여이 문제가 발생했습니다.


삭제하려는 명령과 오류가 표시되었습니다. 무엇을 rm -rf devices합니까?
terdon

또한의 출력을 추가하시기 바랍니다 ls -dli devicesls -dli devices/reg-dummy/subsystem/devices/
terdon

3
첫 번째 명령은 ls -ldi devices아니 어야합니다 device. 이것이 실제로 하드 링크인지 확인하려고합니다 (동일한 inode). 그러나이 디렉토리가 큰 디렉토리 인 rm -rf경우 시간이 오래 걸리지 만 결국에는 작동합니다. 여기서 문제가 순환 링크 인 경우 무한 재귀에 대한 오류 메시지가 표시됩니다. 오류 메시지가 없으면 rm -rf코스를 실행하십시오.
terdon

7
@ terdon : 리눅스 (적어도 우분투)는 하드 링크 된 디렉토리를 허용하지 않는다고 생각 했습니까?
saiarcot895

2
난 당신이 노틸러스 내장 "빈 휴지통"버튼으로 시도했다고 가정합니까? (아마도 노틸러스를 쓸 때 그런 종류의 것들을 생각했을 수도 있습니다 ^^)
MrVaykadji

답변:


3

의 출력은 ls -ldi디렉토리의 inode 번호를 보여줍니다. 디렉토리 내의 디렉토리가 실제로 동일한 이름이 아닌 상위와 동일한 inode 번호를 갖는 경우 파일 시스템이 손상되어 복구 모드로 부팅하여 fsck해야합니다.


1

나는 rm -rf당신이 충분한 시간을 주면 그것이 효과가있을 것이라고 생각 하지만, 그렇지 않다면, 이들 중 하나 또는 둘 다 :

perl -e 'use File::Path qw(remove_tree); 
        remove_tree("$ENV{HOME}/.local/share/Trash/files/devices")'`

 

find .local/share/Trash/files/ -delete

최소한 사용 하면 파일이 삭제되고 있음을 알리는 무언가 가 발생 하고 있는지 확인할 수 있습니다 rm -rfv ~/.local/share/Trash/files/devices.

어쨌든 리눅스에서는 디렉토리를 하드 링크 할 수 없기 때문에 하드 링크 문제가 될 수는 없습니다 (매우 잘못된 의견에도 불구하고). 일반적으로 소프트 링크에서 발생할 수있는 무한 재귀가 발생하면 해당 효과에 대한 메시지가 표시되지만 해당 메시지는 나타나지 않습니다.

내가 생각할 수있는 다른 가능성은 휴지통 폴더가 자체 이상한 시스템이라는 것입니다. 나는 그것이 어떻게 작동하는지 정말로 모른다. 나는 결코 그것을 사용하지 않는다. 그러나 문제가있는 디렉토리를 대상으로하는 대신 최상위 파일을 직접 삭제하는 것이 좋습니다.

rm -rf ~/.local/share/Trash/* 

GUI에서 휴지통 폴더를 비우고 휴지통을 선택하고 "휴지통 비우기"를 클릭하십시오.


둘 다 실패했습니다. 질문이 수정되었습니다.
PyRulez

@PyRulez이 디렉토리는 얼마나 큽니까? 펄 스크립트 나 rm의지 모두 출력을 생성하지 않습니다. 그들은 얼마나 오랫동안 달렸습니까? 또한 find명령 을 업데이트했는데 이전 명령이 잘못되었습니다. 죄송합니다. 업데이트 된 답변을 살펴보십시오. 마지막으로, 우리는 여기서 장님입니다. ls -l사용한 위치 의 출력으로 질문을 업데이트 하고 크기를 알 수 있도록 ls결과를 표시하십시오 du -sch ~/.local/share/Trash/.
terdon

크기를 찾을 수 없습니다.
PyRulez

@PyRulez du -sch ~/.local/share/Trash/는 크기를 줄 것입니다. 다양한 의견이 요청한 모든 내용을 추가하십시오. 필요한 사항을 이해할 수 있도록 필요한 의견을 추가하십시오.
terdon

@tedron 나는되었습니다.
PyRulez

0

(이것이 효과가 있다고 확신하고 지금 당장 여행 할 때 이것이 효과가 없다면 나중에 삭제할 수있는 대답으로 남겨 둘 것입니다.)

  1. 먼저 안전을 위해

    find ~/.local/share/Trash/files/devices/ -exec echo {} \;
    
  2. 둘째, "1"의 출력에 중요한 파일이 표시되지 않으면 다음을 실행하십시오.

    find ~/.local/share/Trash/files/devices/ -exec rm {} \;
    
  3. 마지막 단계는

    find ~/.local/share/Trash/files/devices/ -empty -type d -delete
    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.