Por que não consigo excluir uma pasta?

14
Could not remove the folder [Folder name].

Show more details
 Error removing file: Directory not empty

Cancel-Skip All-Skip

Eu tentei excluir essas pastas do terminal com:

rm -r
tefeno
fonte
2
Se essa saída de erro for do nautilus, você poderá adicionar uma captura de tela à sua pergunta. Além disso, qual é a saída rm -rdo terminal? Você já tentou com as respostas deste post ?
Lucio
1
use rm -rfvez
nickanor 15/03
Eu tenho sido usado rm -Rfpara remover diretórios recursivamente, pode ser este trabalho para você. O R maiúsculo significa Recursivo, consulte as páginas de man rm
manual
1
Você tem permissão para remover este diretório? Por favor, execute ls -lae cole-o aqui para descartar esta opção.
revnoise
Acho que a pasta foi excluída primeiro no Windows e depois tentei excluir no Ubuntu. Em seguida, tentou excluir no Windows, mas disse erro. Directory not empty mas é tudo uma promessa vazia. No Windows, ele diz erroError x00000
tepheno

Respostas:

10

Você tentou sudo rm -r. Que tipo de arquivos existem? Você também pode excluir todos os arquivos primeiro e depois excluir a pasta. É um trabalho extra, mas às vezes vale a pena fazer o trabalho.

sudo é para ações de superusuário.

wlraider70
fonte
Eu sei sudo e a pasta não tem arquivos dentro de apenas uma subpasta. Pasta de Artista e depois Pasta de Álbum, sem MP3s. Apenas pasta.
Tepheno # 28/13
funciona cara ...
Angelin Nadar
9

Eu tive esse problema com uma pasta em um sistema de arquivos btrfs. Verificar pontos de montagem e lsof são as coisas normais a serem procuradas. No meu caso, foi a corrupção causada por um bug antigo, desde que corrigido:

As coisas normais para verificar:

  • lsof + D <caminho> - Esta vontade l i s t tudo o pen f iles. Você não pode excluir uma pasta que contém arquivos abertos, embora isso normalmente também geraria um erro ligeiramente diferente: "Dispositivo ou recurso ocupado". Observe que, se você deixar de fora o "+ D <caminho>", o lsof mostrará uma lista para todas as pastas em todos os sistemas de arquivos - o que perderá tempo. ;)
  • mount : Isso mostrará os sistemas de arquivos atualmente montados. Você não pode excluir um ponto de montagem montado ativamente ou suas pastas pai.
  • sub-lista btrfs <caminho> : Semelhante a um ponto de montagem, você não pode excluir um subvolume btrfs, exceto usando o comando específico do btrfs : subvolume btrfs delete <caminho> .

Solução alternativa de corrupção

No caso de corrupção em que não pode ser facilmente corrigida, a solução básica é fazer backup, formatar o sistema de arquivos e restaurar (deixando de fora os dados incorretos). Dependendo da quantidade de dados que você possui no sistema de arquivos, isso pode ser uma tarefa árdua. : - /

No meu caso, a pasta do problema estava dentro de um subvolume, pelo que pude fazer isso acima, excluindo apenas o subvolume em vez de todo o sistema de arquivos. Fiz uma cópia de segurança dos meus dados e apaguei o subvolume: btrfs sub del <subvolume-path> . Pude restaurar um novo subvolume, deixando de fora a pasta do problema.

Corrupção de i_size

A causa no meu caso foi encontrada como corrupção de i_size , onde era diferente de zero. O Btrfs usa o i_size para informar se a pasta está vazia ou não. Para verificar isso, execute:

stat -c %s <foldername>

O tamanho i de uma pasta vazia no btrfs deve ser zero. Em ext, é tipicamente 4k.

Links Relacionados:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory

zaTricky
fonte
6

Experimente cdo diretório e remova todos os arquivos usando rm -rf *. Em seguida, tente sair do diretório e use-o rmdirpara excluir o diretório.

jkd
fonte
Isso funciona lindamente para mim +1 Obrigado, cara #
AndrewL64
Eu tentei isso, e recebi a mensagem de erro: "lista de argumentos muito longa"
Rafael_Espericueta
1

Experimentar sudo rm -rf [Folder name]

Se ele ainda exibir Diretório não vazio, significa que o diretório está sendo usado. tente fechá-lo ou verifique qual programa o está usando e, em seguida, reutilize o comando.

Funcionou para mim quando estava tentando excluir o projeto do Unity e foi usado pelo hub do Unity. simplesmente fechou o hub da unidade e reescreveu o comando funcionou bem.

Molham Mohamed
fonte
0

Vá para a pasta logo antes da pasta que você deseja excluir e execute este comando alterando o nome da pasta pelo nome da sua pasta: rm -rf nome da pasta

R significa recursivo ef significa força.

Ramon Suarez
fonte
rm: cannot remove Wan Pisu - New World': Directory not empty
Tepheno
Você usou -rf?
Ramon Suarez
-rfEu acho que usei rm -r -f -vsenhor.
Tepheno 28/03
Acabei de fazer um teste com o mesmo nome de diretório e funcionou para mim, também usando sua maneira de separar rf v. Tem certeza de que está usando rme não rmdir? O detalhado (-v) deu-lhe alguma pista? Além disso, existem arquivos de 0 byte no seu diretório? "rm -r -f -v Wan \ Pisu \ - \ Novo \ Mundo / removeu 'Wan Pisu - Novo Mundo / test.test' diretório removido: 'Wan Pisu - Novo Mundo'"
Ramon Suarez
não, são apenas pastas. Além disso, quando eu estou excluindo no Windows, não é Error; 0x-----possível excluir também. -vestá explicando o que está sendo feito Eu seirm --help
tepheno
0

Experimentar: rmdir --ignore-fail-on-non-empty *directory*

Jamie
fonte
isso não faz nada.
3amsleep
0

Se você não tiver permissões de gravação definidas, não poderá remover o diretório.

No exemplo abaixo, mesmo sendo proprietário do diretório, não consigo removê-lo. Depois de adicionar permissões de gravação com chmod- tudo é bem-sucedido.

DIR:/xieerqi
skolodya@ubuntu:$ ls -dl TESTDIR/                                              
dr-xr-xr-x 2 xieerqi xieerqi 4096 Jan 24 16:06 TESTDIR//

DIR:/xieerqi
skolodya@ubuntu:$ rm -rf TESTDIR/                                              
rm: cannot remove ‘TESTDIR/one & two’: Permission denied
rm: cannot remove ‘TESTDIR/tom&jerry’: Permission denied
rm: cannot remove ‘TESTDIR/jekyl&hide’: Permission denied
rm: cannot remove ‘TESTDIR/pdfReader.sh’: Permission denied

DIR:/xieerqi
skolodya@ubuntu:$ chmod +w TESTDIR/                                            

DIR:/xieerqi
skolodya@ubuntu:$ rm -rf TESTDIR/                                              

DIR:/xieerqi
skolodya@ubuntu:$ echo $?
0
Sergiy Kolodyazhnyy
fonte
0

Eu tenho pastas no Windows montadas em uma máquina virtual (VM) do Ubuntu VirtualBox. Não pude removê-los do gerenciador de arquivos do Windows ou de dentro da VM usando rmdirou rm -Rf *.

TLDR : Finalmente consegui removê-los no Git Bash (no Windows, é claro) usando rm -Rf *.

Quando tentei excluir o gerenciador de arquivos do Windows, ele disse que precisava de privilégios de administrador para excluir as pastas. Mas, mesmo como Admin, ele ainda falhou.

Na VM do Ubuntu (onde nunca tive problemas para remover arquivos compartilhados antes), recebi o erro cannot remove protocol error, assim como alguns outros.

Finalmente, no Git Bash no Windows, pude excluir as pastas. Acho que o Git Bash tinha algum tipo de bloqueio nas pastas. No Git Bash, meu diretório de trabalho era um dos que eu estava tentando excluir. Recuei e excluí-o usando rm -Rfsem nenhum erro.

Buttle Butkus
fonte