파일명이 비어있는 폴더 삭제(?)

파일명이 비어있는 폴더 삭제(?)

파일 이름이 비어 있는 폴더가 포함된 폴더가 있는 것 같습니다.

$ ls -alF Antonin_Dvorak/
total 12
drwx------ 3 VUW\me VUW\domain users 4096 Jan 22  2015 /
drwx------ 3 VUW\me VUW\domain users 4096 Jan 22  2015 ./
drwx------ 3 VUW\me VUW\domain users 4096 Aug 25 11:10 ../

파이썬에서는 비어 있는 것처럼 보입니다.

$ python
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul  2 2016, 17:53:06) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.listdir()
['']
>>> len(os.listdir('Antonin_Dvorak')[0])
0

디렉토리로 변경하고 실행하면 ls오류가 발생합니다.

$ cd Antonin_Dvorak
$ ls
ls: cannot access '': No such file or directory

$ ls -alF
ls: cannot access '': No such file or directory
total 8
d????????? ? ?             ?                   ?            ? /
drwx------ 3 VUW\kaipingga VUW\domain users 4096 Jan 22  2015 ./
drwx------ 3 VUW\kaipingga VUW\domain users 4096 Aug 25 11:10 ../

어느 시점에서 파일 이름은 아마도 키릴 문자가 포함된 앨범/음악 제목이었을 것이라고 가정하고 있지만 그 동안 폴더는 다른 파일 시스템으로 이동되고 휴지통으로 이동되었으며 배포판 업그레이드가 발생했습니다. 이 폴더를 포함하는 파일 시스템은 다음과 같습니다.

$ mount | grep grep $(pwd | head -c 9)
/etc/auto.master.d/issc_nfs_homedir.conf on /vol/home type autofs (rw,relatime,fd=6,pgrp=1310,timeout=300,minproto=5,maxproto=5,direct)
vuwunix01:/vol/vfiler_vuwunix01_data01/users on /vol/home type nfs4 (rw,nosuid,relatime,vers=4.0,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=krb5,clientaddr=132.229.239.78,local_lock=none,addr=132.229.18.60)

내용을 복원하고 싶지 않고 Antonin_Dvorak 폴더 전체를 삭제하고 싶습니다.

$ cd ..; rm -rf Antonin_Dvorak/
rm: cannot remove 'Antonin_Dvorak/': Directory not empty

현재 이 컴퓨터에 대한 루트 액세스 권한이 없습니다. 이 컴퓨터는 네트워크 공유에 있습니다. 나는 무엇을 해야 합니까?


무엇을 기다립니다? 이것을 질문 본문으로 편집하겠습니다. 그러나 다음과 같습니다.

$ ls -ial Antonin_Dvorak/
total 12
24005685 drwx------ 3 VUW\kaipingga VUW\domain users 4096 Jan 22  2015 
24005685 drwx------ 3 VUW\kaipingga VUW\domain users 4096 Jan 22  2015 .
47956345 drwx------ 3 VUW\kaipingga VUW\domain users 4096 Aug 25 11:10 ..
$ #So, no surprise here:
$ find . -maxdepth 1 -type d -inum 24005685 -delete
find: cannot delete ‘./Antonin_Dvorak’: Directory not empty

이름없는 임의의 폴더가 아닙니다. 폴더 자체에 대한 이름 없는 하드 링크입니까?

답변1

inode를 통해 폴더를 삭제할 수 있습니다.

먼저 를 사용하여 inode 번호를 찾습니다 ls -ial Antonin_Dvorak/.

예제 출력:

$ ls -ial Antonin_Dvorak/
total 12
25306387 drwx------ 3 VUW\me VUW\domain users 4096 Jan 22  2015 /
23592962 drwx------ 3 VUW\me VUW\domain users 4096 Jan 22  2015 ./
23592391 drwx------ 3 VUW\me VUW\domain users 4096 Aug 25 11:10 ../

inode를 rm에 직접 전달할 수는 없지만 find에는 트릭이 있습니다.

find . -maxdepth 1 -type d -inum 25306387 -delete

예시 inode(25306387)를 시스템의 inode로 바꾸십시오!

답변2

사용해 보세요풀리다. 하드 링크이므로 rm -r이 작동하기 전에 링크를 해제해야 합니다.

관련 정보