“Não é possível remover 'some_directory': diretório não está vazio”

27

Eu tentei excluir algum diretório, mas

$ rm DE.aspx_files -r
rm: cannot remove `DE.aspx_files': Directory not empty

Mas listar seu conteúdo não retorna nenhum

$ ls DE.aspx_files
$

Adicionado: Na verdade

$ ls -la DE.aspx_files

total 4
drwx------ 1 ting ting 4096 Sep 14 20:48 .
drwx------ 1 ting ting    0 Sep 13 22:34 ..
-rw------- 1 ting ting    0 Sep 13 22:34 .fuse_hidden0001d4bf00000006

Quando tento rm .fuse_hidden0001d4bf00000006, ele é excluído, mas outro novo é .fuse_hidden0001d4bf00000007criado.

Então, eu me pergunto o que aconteceu e como corrigir esse problema?

Nota: é um HDD externo externo recém-adquirido e apenas copio alguns arquivos usando um programa de recuperação de dados.

Sistema operacional: Ubuntu 12.04

Obrigado!

Tim
fonte
3
Você precisa descobrir o que está montando um sistema de arquivos FUSE lá. Tente mount | fgrep fuseencontrá-lo e fusermount -u <mountpoint>desmontá-lo antes de tentar excluir seu diretório.
código é o seguinte
Como você exclui o arquivo sem montar?
Stephen Boston

Respostas:

16

Arquivos ocultos

Você pode ter arquivos ocultos. Você pode encontrá-los ls -lapara garantir que você realmente os apague primeiro. Em seguida, você pode excluir os arquivos antes de executar rm -rou rmdirconforme necessário.

Forçando a exclusão recursiva

Você também pode fazer isso rm -rfpara forçar a exclusão recursiva, mesmo que o diretório de destino contenha arquivos. Todos os avisos usuais se aplicam, mas o trabalho será feito independentemente do que o diretório contenha - desde que você tenha permissão para excluir os arquivos e diretórios, é claro.

CodeGnome
fonte
11
Além disso, você pode executar find DE.aspx_files -exec ls -la {} \;para identificar arquivos ocultos ou arquivos nomeados com caracteres especiais.
Tim Kennedy
Obrigado, identifiquei o arquivo oculto responsável, que pode ser excluído, mas um novo irmão é gerado. Por favor, veja minha parte adicionada. Forçar exclusão também não funciona, porque "Diretório não está vazio".
Tim
56

Os arquivos do formulário .fuse_hidden*são criados pelos sistemas de arquivos do FUSE quando um arquivo é excluído, mas ainda está em uso em algum lugar e ainda deve ter uma entrada de diretório. É semelhante aos .nfs*arquivos nos diretórios exportados pelo NFS .

Execute df -T .para ver o tipo de sistema de arquivos montado no diretório atual e seu ponto de montagem. Para um disco rígido externo, é provável que este seja um sistema de arquivos NTFS montado através do driver NTFS-3G , que é baseado no FUSE.

O nome é um nome falso que o driver do sistema de arquivos inventa para um arquivo excluído. Você não pode excluir o arquivo (ou melhor, se você criar o arquivo, ele reaparecerá com outro nome). Você também não pode excluir o diretório, pois ele não está vazio. Você precisará encontrar o que está usando esse arquivo. A causa mais provável de estar em uso é se ele estiver aberto por algum aplicativo. Execute lsof /media/mount-pointonde /media/mount-pointestá o ponto de montagem do sistema de arquivos e procure um arquivo aberto nesse diretório.

Gilles 'SO- parar de ser mau'
fonte
6
Essa resposta é a que realmente resolve o problema
Martin Erhardt
Obrigado, funciona. Usei essa resposta e vi várias coisas que estavam usando minhas pastas. Reiniciei e tentei ver a mesma lista novamente - estava vazia. E então a exclusão ocorreu sem problemas.
Sevastyan
12

Para discos rígidos externos, esse problema pode ser resolvido por,

  • Clique com o botão direito na pasta e selecione Move to Trash
  • Esvazie a lixeira

Funcionou para mim, mesmo rm -rfque não funcionasse.

DileepNimantha
fonte
11
Sim, isso funciona. Por quê?! No entanto, os arquivos estão no lixo e são igualmente problemáticos.
Stephen Boston
-1

Se estiver no mac, esteja ciente também dos arquivos * .localizados, que podem ficar invisíveis até para 'ls -la', 'find' e seus tipos em um sistema de arquivos FUSE. [Isso foi descoberto usando um sistema de arquivos FUSE criado pelo ConnectedData Transporter em um MacBook Pro.]

Dave
fonte
-1

Isso pode acontecer quando você está propagando um arquivo em um cliente de torrent também. Apenas certifique-se de desligar o cliente de torrent ou remover o torrent de propagação.

Daniel Reid
fonte