Boş bir dizini kaldırmaya çalışırken neden “Dizin boş değil” alıyorum?


37

Bu boş dizine sahibim, ancak aşağıdaki hata iletisini alıyorum:

Cannot remove test: Directory not empty

Bu sorunun pek çok kez sorulduğunu biliyorum ama hiçbiri işe yaramadı.

ls -laGizli dosyalar olmadığından emin olmaya çalıştım ve görünmüyor: görüntü tanımını buraya girin

Denedim sudo rmdir testsıra sıra sudo rm -rf testve sadece sorunun ne olduğunu bilmiyorum.

Dosya sistemiyle ilgili bir sorun olabileceğini okudum, ancak nasıl düzelteceğime dair hiçbir fikrim yok.


Deneyinsudo fsck /
ike

2
Normal bir dizin mi yoksa bir bağlantı noktası mı? Bu bir bağlama noktasıysa, silmeden önce bağlantısı kaldırılmalıdır. Normal bir dizinse, bazen bazı açık tutamaçlar bu soruna neden olabilir. Makinenizi bir kez yeniden başlatın ve silmeyi deneyin.
vembutech

@ rbrick testGiriş yapmak kullanıcının adı mı? çıktı echo $USERnedir? ve ne echo $HOME?
α Decsнιη

1
Kafam karıştı, neden kullanıcı dizinde yürütme izinlerine sahip değil, grup var?
Julian Stirling,

Yanıtlar:


36

Harici bir sabit diskte de aynı problemi yaşadım, komut satırını kullanarak çok fazla yol denedim ama her seferinde başarısız oldum. Bu benim için çalıştı.

  1. Klasöre sağ tıklayın
  2. Çöp kutusuna taşıyın
  3. Boş çöp kutusu

Evet, saçma ama benim için çalıştı (gerçekten nasıl ve neden bilmiyorum ama kahrolası klasör artık yok)


Aynı sorunu anladım ve cevabınız işe yarıyor. Aptalca şeyin ne olduğundan ve neden "-rf" nin boş olmayan bir klasörü kaldıramadığından emin değil.
artm

3
Burada ne oldu? Neden işe yaradı?
Sahil Arora

Ne oldu? Açıkçası, bilmiyorum. Belki de, klasörün dosyası bir nedenden dolayı bozulmuş: "boş" gibi bir bayrak ya da "how-many-inside-inside" gibi bir dosya sayacı hatalı bir değere ayarlanmış. Bazen, bunun gibi hatalar sabit diskteki hasarlardan kaynaklanıyor olabilir. Neden işe yaradı? Komutların nasıl uygulandığını bilmiyorum (C'yi düşünün), ancak sanırım hareket etmeden önce bu bayrakları ve sayaçları kontrol ediyorlar (yani eğer dosya sayacı> 0 ise "hata: dizin boş değil" ve iptal) çöp kutusu, klasörü ve tüm dosya ve alt klasörlerini herhangi bir kontrol olmadan doğrudan kaldırır.
Marco Ottina,

Belki bir klasörü komut satırı üzerinden silmek, klasörün boşluğu gibi bazı koşulları gerektirir (çünkü klasörün düğümünü dosya sisteminden kaldırmak yalnızca o tek bir bağlantı düğümünü kaldırır ve klasörün boş olmasını gerektirir, böylece başka hiçbir dosya düğümü unutulmaz " "dosya sistemi aracılığıyla aralarına verilen bağlantıyı kaybetme, klasörle temsil edilme nedeniyle) .. ve bir klasörü sağ tıklamayla silme -> çöp kutusunu silme veya boşaltma klasörü VE tüm dosya ve alt klasörleri tekrar tekrar işaretler, bayraklara bakmadan kaldırır, Sayaç ve bunun gibi şeyler (yani, hiçbir kontrol yapılmaz)
Marco Ottina

1
Benim durumumda, söz konusu alt dizin Mac'imden bir linux VM ile paylaşılan bir klasördeydi ve klasörü linux VM tarafından silmeye çalışıyordum. Mac tarafının bazı klasörleri tuttuğu anlaşılıyor. Yapma rm -rfMac taraftan çalıştı.
MindJuice

5

Kurulu 10 + ubuntu ikili sistem kazandım. Ve her iki sistem de pencere pariteksiyonlarını paylaşır.

Son zamanlarda, ubuntu altındaki bu bölümlerdeki boş klasörleri silemedim. Linux altında çözmek için bir çözüm bulamıyorum.

Ancak, pencerelere geçip çalıştırdıktan sonra

chkdsk

yoluyla cmdhedef disk için. Bazı hatalar kontrol edildi. ve sonra koşarım

chkdsk /F

disk hatasını düzeltmek için.

Tamamlandıktan sonra bu klasörleri şimdi silebiliyorum.


2
Bu yöntem benim için çalışıyor. Paylaşılan bölüm (ler) in NTFS formatlı olduğunu ve muhtemelen bozuk olduğunu not etmenin de önemli olduğunu düşünüyorum.
krismath

4

Yazarak silebilirsiniz sudo rm -rf {dir_name}. Dizin salt okunur izne ayarlanmış olabilir. Umarım verilen komut klasörü silebilir.


Directory not emptyYine de anladım . Tuhaf görünüyor, bu yüzden kanıtlamak için ekranımı kaydettim.
naXa

Cevaptaki bu komut, dizinde içerik olsa ve alt dizinlerde olsa bile çalışır.
Wolverine


Bu garip davranış, NTFS bölümündeki hatalardan kaynaklandı. ile çözüldü chkdsk /F.
naXa

4

Aynı sorun, boş olmadığı için dizini kaldıramadı.

Bu işlem sırası benim için çalıştı.

  1. Önce komut satırından

    sudo rmdir  --ignore-fail-on-non-empty folder-name-to-be-deleted
    

Yukarıdaki komut ubuntu dizini boş değil görmezden yardımcı olur.

  1. Sonra sadece klasöre gidin ve Shift + Del.

3

GUI çözümü

  1. Klasörü taşıma veya kesme ve çöp kutusuna yapıştırma
  2. boş çöp

halloldu.

Komut satırı çözümü

sudo mv folder_error/ .local/share/Trash

trash-cli ile temizleyebilirsiniz: trash-empty veya

sudo rm -fr ~/.local/share/Trash/*

1
Buradaki komut satırı çözümünün aslında genel bir çözüm olduğunu düşünüyorum. Boş klasörü başka bir yere taşıyın ve taşındıktan sonra kaldırın. Örneğin, böyle bir şey mkdir a ; mv test a/ ; rm -rf a/test ; rm -rf a. Bunun gibi bir yaklaşım benim için işe yaradı (neden olacağı hakkında hiçbir fikrim olmasa da) ve kök erişimine ihtiyacım yoktu.
Jake Fisher,

2

Dizin, CIFS (aka samba) ile bağlanmış bir dosya sisteminin parçasıysa ve bozuk bir sembolik bağlantı olan bir dosya içeriyorsa, o lsdosyadan bahsetmez. (Bu hatayı 14.04.2 LTS çalışan bir CIFS istemcisinde ve 12.04.5 LTS çalışan bir sunucuda gözlemliyorum.)

Yani dizin boş değil , ama (CIFS üzerinden) bunu görmenin bir yolu yok. Dosya yalnızca bu dosya sistemini barındıran dosya sunucusunda çalışan bir komutla görülebilir ve bu nedenle yalnızca silinebilir.


2

Eğer btrfs kullanıyorsanız, muhtemelen sıfır olmayan i_size içeren boş bir dizindir. Bunun böyle olup olmadığını kontrol edebilirsiniz:

stat -c %s test

Btrfs içindeki boş bir klasörün i_size değeri sıfır olmalıdır. Benim durumumda 6160 var ~/.config/chromium/Default.

Önerilen çözüm, dosya sistemini btrfs checkkaldırmak, sorunu onaylamak ve diğer sorunlu dizinleri kontrol etmek ve daha sonra btrfs check --repairda düzeltmek için çalıştırmaktır . Bu işlem riskli olsa da, önce dosyaları yedeklemek iyi bir fikirdir.

Kaynak: Btrfs Sorunu SSS


1

Ubuntu 16.04'te de aynı sorunu yaşadım ve düzelttim:

  1. çöp klasörünü boşaltma
  2. rebooting

Dosya yöneticisinin açılması ve kapatılması hiçbir işe yaramadı - yalnızca yeniden başlatma işlemi çalıştı.


0

bu komutu dene:

sudo lsof | grep deleted 

Dizininiz hala kullanımda mı, listede kontrol edin. : D

Öyleyse, servisi durdurursanız dizini silebilirsiniz.


Açıkçası, dizin silinemiyorsa açık, silinen dosya tanımlayıcıları listesinde görünmez. ; -]
David Foerster

0

Bu sorun, bu klasörler veya dosyalar tamamen kopyalanmadığında ortaya çıkar. Giriş / Çıkış Hatası. Shift+ DelVeya komutları kullanarak silmeye çalıştım , ancak işe yaramadı. Sağ tıklayıp "Çöp Kutusuna Taşı" yı denedim ve işe yaradı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.