GNU/Linux >> Linux Esercitazione >  >> Linux

Come eliminare questa directory indelebile?

Ho ripristinato un file tar danneggiato e sono riuscito a trovare una directory
che non riesco a eliminare,
Se provo a eliminarlo, sembra che non possa essere trovato, ma ls mostra che è presente, sia con bash che con python ottengo un comportamento simile, tranne subito dopo aver tentato di eliminarlo con rm -rf , ls si lamenta che non riesce a trovarlo, quindi lo elenca (vedi sotto dopo rm -rf ). Il find comando mostra che il file è presente,
ma ancora non riesco a pensare a un modo per eliminarlo.
Ecco i miei tentativi:

Qui vedi entrambi ls e find siamo d'accordo che abbiamo una directory,

rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -print0  
./mikeaâcnt 

Ma non posso eliminarlo:

rl]$ find -maxdepth 1 -type d -empty -print0 |  xargs -0 rm -f -v 
rm: cannot remove `./mikeaâ302201302204cnt': Is a directory
rl]$ ls
mikeaâ??cnt

Posso cd ad esso però ed è vuoto:

rl]$ cd mikeaâ^Á^Äcnt/
mikeaâ^Á^Äcnt]$ ls
mikeaâ^Á^Äcnt]$ pwd
.../rl/mikeaâcnt


mikeaâ^Á^Äcnt]$ cd ../
rl]$ ls
mikeaâ??cnt

vedi sotto che non è un semplice file ma una directory, più ls si comporta in modo strano dopo rm -rf dice che non riesce a trovare il file, quindi lo elenca subito dopo:

rl]$ rm mikeaâ^Á^Äcnt/
rm: cannot remove `mikeaâ302201302204cnt/': Is a directory
rl]$ rm -rf  mikeaâ^Á^Äcnt/
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$ 

Quindi questo è il tentativo con python, il file è stato trovato, ma il nome non è
utilizzabile come nome cancellabile:

rl]$ python 
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import shutil
>>> os.listdir('.')
['mikeaxc3xa2xc2x81xc2x84cnt']
>>> shutil.rmtree(os.listdir('.')[0] )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/shutil.py", line 204, in rmtree
    onerror(os.listdir, path, sys.exc_info())
  File "/usr/lib64/python2.6/shutil.py", line 202, in rmtree
    names = os.listdir(path)
OSError: [Errno 2] No such file or directory: 'mikeaxc3xa2xc2x81xc2x84cnt'

anche quando utilizzo il completamento delle schede, il nome che raccoglie non è utilizzabile:

rl]$ rm -rf mikeaâ^Á^Äcnt 
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

usando il nome che Python mostra con bash ottengo questo:

rl]$ rm -rf "mikeaxc3xa2xc2x81xc2x84cnt"
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

C'è qualcosa che posso fare per eliminare questa directory corrotta?
Il filesystem sottostante (NFS) sembra funzionante e non vengono segnalati altri problemi e non ho avuto tali problemi fino al file tar corrotto.

EDIT:
Qui sta usando find è proprio -exec opzione per chiamare rm

rl]$ find -maxdepth 1 -type d -empty -exec rm -f {} ;
find: `./mikeaâ302201302204cnt': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$

ma il file è ancora lì, (ls si lamenta di non trovarlo, ma poi lo mostra comunque)

2a EDIT:

rl]$ find -maxdepth 1 -type d -empty -exec rm -rf {} ;
find: `./mikeaâ302201302204cnt': No such file or directory
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

Il comportamento è ancora invariato, il file è ancora presente

3a EDIT:

rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -exec rm -rf {} + 
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

Sembra che ci sia qualcosa di più nel nome di mikeaâcnt dall'osservare l'output del tentativo python mikeaxc3xa2xc2x81xc2x84cnt e questo screenshot:

4° EDIT:
Questo è il tentativo con un jolly:

rl]$ echo * 
mikeaâcnt
rl]$ echo mike* 
mikeaâcnt
rl]$ rm -rf mike*
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt

e la mia lingua:

rl]$  locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

5a modifica:

rl]$ ls -i 
ls: cannot access mikeaâcnt: No such file or directory
? mikeaâ??cnt

ma anche il comportamento è cambiato, ora ls e cd fai questo:

rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
rl]$ cd mikeaâ^Á^Äcnt 
mikeaâcnt: No such file or directory.

Questo è successo dopo i tentativi di eliminazione, penso che potrebbero essere problemi NFS come suggerito in una delle risposte qui da vinc17.

Correlati:$PWD? (rispetto alla directory di lavoro corrente)?

6° EDIT:
Questo è l'output di lsof e ls -a


rl]$ /usr/sbin/lsof mikeaâ^Á^Äcnt
lsof:errore di stato su mikeaâxc2x81xc2x84cnt:nessun file o directory di questo tipo

sopra è sbagliato, ecco il corretto lsof invocazione:(rl è la directory principale)

rl]$ /usr/sbin/lsof | grep mike | grep rl 
tcsh      11926   mike  cwd       DIR   0,33     4096 19569249 /home/mike/mish/rl
lsof      14733   mike  cwd       DIR   0,33     4096 19569249 /home/mike/mish/rl
grep      14734   mike  cwd       DIR   0,33     4096 19569249 /home/mike/mish/rl
grep      14735   mike  cwd       DIR   0,33     4096 19569249 /home/mike/mish/rl
lsof      14736   mike  cwd       DIR   0,33     4096 19569249 /home/mike/mish/rl
rl]$ 

rl]$ ls -a
ls: cannot access mikeaâcnt: No such file or directory
.  ..  mikeaâ??cnt

7a modifica:
move non funziona (l'ho provato prima di tutto questo, ma non ho salvato l'output), ma ha lo stesso problema di ls e rm con il file.

8° EDIT:
questo sta usando i caratteri esadecimali come suggerito:

 rl]$ ls --show-control-chars | xxd0000000:6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a mikea......cnt.rl]$ rmdir $'mikea6d696b6561c3a2c281c284636e74
Linux
  1. Come eliminare gli account utente con Home Directory in Linux

  2. Come eliminare un servizio in Kubernetes

  3. Come creare un collegamento a una directory

  4. Come eliminare tutti i file in una directory tranne alcuni?

  5. come posso eliminare in modo ricorsivo le directory vuote nella mia home directory?

Come rimuovere una directory in Linux

Come rimuovere (eliminare) la directory in Linux

Come eliminare le righe in Vim / Vi

Come eliminare una directory in Ubuntu 20.04

Rimuovi directory in Linux - Come eliminare una cartella dalla riga di comando

Come copiare la directory su Linux