Удалите каталог косвенно в себе

У меня есть каталог в себе. Как я удаляю его.

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

Также

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

Кроме того, хотя мой мозг не может решить проблему остановки, это появляется это sudo rm -rf devices продолжается навсегда, не производя вывод.

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

То же самое для perl -e 'use File::Path qw(remove_tree); remove_tree("$ENV{HOME}/.local/share/Trash/files/devices")'. То же самое для du -s devices/. То же самое для du -sch ~/.local/share/Trash/ Другие команды

$ 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

Я не хочу это, всунул мой мусор навсегда!

Примечание: Я делал сырое резервное копирование компьютера путем простого использования scp, и но у меня закончилось пространство, и затем это произошло.

9
задан 14 April 2014 в 06:18

3 ответа

Вывод ls -ldi покажет inode количество каталога. Если каталог в рамках каталога действительно имеет то же inode число как свой предок, а не просто то же имя, то Ваша файловая система повреждена и необходимо будет загрузить в спасательный режим и fsck его.

3
ответ дан 16 November 2019 в 16:28

Я все еще думаю, что rm -rf будет работать, если Вы дадите ему достаточно времени, но в противном случае один или оба из них должен:

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

 

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

можно удостовериться, что что-то происходит, если Вы используете rm -rfv ~/.local/share/Trash/files/devices, по крайней мере, который сообщит, что файлы удаляются.

Так или иначе, это не может быть hardlink проблемой (несмотря на мой очень неправильный комментарий), потому что каталоги не могут быть hardlinked в соответствии с Linux. В целом, когда у Вас есть бесконечная рекурсия, как это может произойти с softlinks, Вы получите сообщение к тому эффекту, которого, кажется, не происходит.

другая возможность, о которой я могу думать, состоит в том, что Папка "Удаленные" является некоторой странной собственной системой. Я действительно не знаю, как это работает, я никогда не использую его. Однако у Вас могла бы быть лучшая удача при удалении высокоуровневых файлов непосредственно вместо того, чтобы быть нацеленными на проблематичный каталог:

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

необходимо также попытаться освободить Папку "Удаленные" от GUI, просто избранный Мусор и нажать на "Empty Trash", видеть, работает ли это.

1
ответ дан 16 November 2019 в 16:28

(Я уверен, что это будет работать и когда я собираюсь путешествовать прямо сейчас, я оставлю это как ответ, который я могу удалить в будущем, если оно не работает.)

  1. Первый, для сейфа, выполнение

    find ~/.local/share/Trash/files/devices/ -exec echo {} \;
    
  2. 119-секундный, если бы вывод "1" не показал важного файла, то выполненный

    find ~/.local/share/Trash/files/devices/ -exec rm {} \;
    
  3. заключительный шаг был бы

    find ~/.local/share/Trash/files/devices/ -empty -type d -delete
    
0
ответ дан 16 November 2019 в 16:28

Другие вопросы по тегам:

Похожие вопросы: