Excluir pasta com nome de arquivo vazio (?)

3

Parece que tenho uma pasta que contém uma pasta com o nome do arquivo vazio.

$ 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 ../

Ele aparece como vazio em python.

$ 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

Quando eu mudo para o diretório e executo ls , recebo um erro

$ 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 ../

Suponho que, em algum momento, o nome do arquivo pode ter sido um título de álbum / música contendo caracteres cirílicos, mas, enquanto isso, movendo a pasta para um fs diferente, movendo-a para a lixeira e ocorrendo um upgrade de distribuição. O sistema de arquivos que contém esta pasta é

$ 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)

Eu não quero recuperar o conteúdo, eu só quero apagar toda a pasta Antonin_Dvorak.

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

Eu não tenho acesso root a esta máquina no momento e observe que isso está em um compartilhamento de rede. O que devo fazer?

Espere, o que? Vou editar isso no corpo da pergunta, mas:

$ 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

Não é apenas uma pasta aleatória sem nome. É um link rígido sem nome para a pasta em si?

    
por Anaphory 25.08.2017 / 11:35

2 respostas

3

Você pode excluir a pasta por inode.

Primeiro, encontre o número do inode com ls -ial Antonin_Dvorak/ .

Exemplo de saída:

$ 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 ../

Você não pode passar um inode para rm diretamente, mas existe um truque com o find.

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

Certifique-se de substituir meu exemplo inode (25306387) pelo do seu sistema!

    
por 25.08.2017 / 11:52
0

Tente usar unlink . Como é um link físico, você precisará desvinculá-lo e, em seguida, rm -r funcionará.

    
por 25.08.2017 / 12:51