Dizini dolaylı olarak kendi içinde sil


9

Kendi içinde bir dizin var. Nasıl silebilirim.

~/.local/share/Trash/files$ ls devices/
reg-dummy
~/.local/share/Trash/files$ ls devices/reg-dummy/
subsystem
~/.local/share/Trash/files$ ls devices/reg-dummy/subsystem/
devices

Ayrıca

~/.local/share/Trash/files$ find devices/ | head -n 20
devices/
devices/reg-dummy
devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices
devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy/subsystem/devices/reg-dummy

Ayrıca, beynim durma problemini çözemese de, sudo rm -rf devicesçıktı üretmeden sonsuza kadar devam ediyor gibi görünüyor .

~/.local/share/Trash/files$ sudo rm -rf devices
^C~/.local/share/Trash/files$

Aynı şey perl -e 'use File::Path qw(remove_tree); remove_tree("$ENV{HOME}/.local/share/Trash/files/devices")'. Aynı şey du -s devices/. du -sch ~/.local/share/Trash/ Diğer komutlar için aynı şey

$ cd ~/.local/share/Trash/files/devices/reg-dummy/subsystem/devices/
$ ls -ldi 
8131921 drwxr-xr-x 3 theking theking 4096 Mar 17 19:43 .
$ cd reg-dummy/subsystem/devices/
$ ls -dli
8131926 drwxr-xr-x 3 theking theking 4096 Mar 17 19:43 .


$ find .local/share/Trash/files/ -maxdepth 1 -delete
find: cannot delete `.local/share/Trash/files/devices': Directory not empty
find: cannot delete `.local/share/Trash/files/': Directory not empty

Sonsuza kadar çöp kutusuna yapışmasını istemiyorum!

Not: Basitçe kullanarak bir bilgisayarın kaba bir yedeğini alıyordum scp, ancak alanım bitti ve sonra bu oldu.


Lütfen bize silmeye çalıştığınız komutu ve size verdiği hatayı gösterin. Ne yapar rm -rf devices?
terdon

Lütfen ayrıca ls -dli devicesvels -dli devices/reg-dummy/subsystem/devices/
terdon

3
İlk komut olmalıydı ls -ldi devices, değil device. Bu aslında sabit bağlantılar (aynı inode) olup olmadığını görmek için çalışıyorum. Ancak, eğer bu büyük bir dizin ise, rm -rfuzun zaman alacaktır ama sonunda çalışacaktır. Buradaki sorun dairesel bağlantılarsa, sonsuz özyineleme hakkında bir hata iletisi alırsınız. Herhangi bir hata mesajı yoksa, sadece rm -rfyolunu çalıştırın.
Mart'ta terdon

7
@terdon: Linux'un (en azından Ubuntu) sabit bağlantılı dizinlere izin vermediğini düşündüm?
saiarcot895

2
Ben sadece nautilus yerleşik "boş çöp" düğmesi ile denedim varsayalım? (belki nautilus yazarken bu tür şeyleri düşündüler ^^)
MrVaykadji

Yanıtlar:


3

Çıktısı ls -ldidizinin inode numarasını gösterir. Dizin içindeki dizin, yalnızca aynı addan çok atasıyla aynı inode numarasına sahipse, dosya sisteminiz bozuktur ve kurtarma moduna önyükleme yapmanız ve fsck yapmanız gerekir.


1

Hala rm -rfyeterli zaman verirseniz işe yarayacağını düşünüyorum, ancak değilse, bunlardan biri veya her ikisi de:

perl -e 'use File::Path qw(remove_tree); 
        remove_tree("$ENV{HOME}/.local/share/Trash/files/devices")'`

 

find .local/share/Trash/files/ -delete

En azından dosyaların silinmekte olduğunu size bildiren bir şey olup olmadığından emin olabilirsiniz rm -rfv ~/.local/share/Trash/files/devices.

Her neyse, bu bir hardlink problemi olamaz (çok yanlış yorumuma rağmen) çünkü dizinler Linux altında hardlink edilemez. Genel olarak, yumuşak bağlantılarda olduğu gibi sonsuz özyinelemeniz olduğunda, bu etki için bir mesaj alacaksınız, bu görünmüyor.

Düşünebileceğim diğer olasılık, Çöp klasörünün kendine özgü garip bir sistem olması. Nasıl çalıştığını gerçekten bilmiyorum, asla kullanmıyorum. Ancak, sorunlu dizini hedeflemek yerine en üst düzey dosyaları doğrudan silme şansınız daha iyi olabilir:

rm -rf ~/.local/share/Trash/* 

Ayrıca, Çöp Kutusu klasörünü GUI'den boşaltmayı da denemelisiniz, sadece Çöp Kutusu'nu seçip "Çöp Kutusunu Boşalt" ı tıklamanız yeterlidir, işe yarayıp yaramadığına bakın.


İkisi de başarısız oldu. Soru revize edildi.
Mart'ta PyRulez

@PyRulez bu dizin ne kadar büyük? Ne perl betiği ne de rmherhangi bir çıktı üretmez. Ne kadar sürdüler? findKomutu da güncelledim, önceki hata yanlıştı. Güncellenmiş cevaba bir göz atın. Sonunda, burada kör çalışıyoruz. Lütfen sorunuzu ls -lkullandığınız yerin çıktısıyla güncelleyin ls, sonucunu da gösterin, du -sch ~/.local/share/Trash/böylece boyutunu biliyoruz.
terdon

Boyutu bulamadım.
PyRulez

@PyRulez du -sch ~/.local/share/Trash/size boyutu verecek deneyin . Ve lütfen çeşitli yorumların istediği her şeyi ekleyin, neler olduğunu anlayabilmemiz için gerekli.
Mart'ta terdon

@tedron oldum.
Mart'ta PyRulez 0:15

0

(Bunun işe yarayacağından eminim ve şu anda seyahat edeceğim için, eğer işe yaramazsa gelecekte silebileceğim bir cevap olarak bırakacağım.)

  1. İlk olarak, güvende olmak için, koş

    find ~/.local/share/Trash/files/devices/ -exec echo {} \;
    
  2. İkincisi, "1" çıktısı önemli bir dosya göstermediyse,

    find ~/.local/share/Trash/files/devices/ -exec rm {} \;
    
  3. Son adım

    find ~/.local/share/Trash/files/devices/ -empty -type d -delete
    
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.