GNU/Linux >> Tutoriels Linux >  >> Linux

Comment supprimer ce répertoire indélébile ?

J'ai détarré un fichier tar corrompu et j'ai réussi à me retrouver avec un répertoire
que je ne peux pas supprimer,
Si j'essaie de le supprimer, il semble qu'il ne puisse pas être trouvé, mais ls montre qu'il est présent, à la fois avec bash et avec python, j'obtiens un comportement similaire, sauf juste après avoir essayé de le supprimer avec rm -rf , ls se plaint qu'il ne peut pas le trouver, puis il le liste (voir ci-dessous après rm -rf ). Le find La commande indique que le fichier est présent,
mais je ne trouve toujours pas de moyen de le supprimer.
Voici mes tentatives :

Ici vous voyez les deux ls et find d'accord, nous avons un répertoire,

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

Mais je ne peux pas le supprimer :

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

je peux cd mais il est vide :

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


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

voir ci-dessous qui n'est pas un simple fichier mais un répertoire, plus ls se comporte bizarrement après le rm -rf il dit qu'il ne peut pas trouver le fichier puis le liste juste après :

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]$ 

C'est donc la tentative avec python, le fichier est trouvé, mais le nom n'est
pas utilisable comme nom pouvant être supprimé :

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'

même lorsque j'utilise la complétion par tabulation, le nom qu'il prend n'est pas utilisable :

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

en utilisant le nom que python montre avec bash, j'obtiens ceci :

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

Puis-je faire quelque chose pour me débarrasser de ce répertoire corrompu ?
Le système de fichiers sous-jacent (NFS) semble fonctionnel et aucun autre problème n'est signalé, et je n'ai eu aucun problème de ce type jusqu'au fichier tar corrompu.

EDIT :
Ici, on utilise find son propre -exec possibilité d'appeler 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]$

mais le fichier est toujours là, (ls se plaint qu'il ne peut pas le trouver, mais le montre quand même)

2ème ÉDITION :

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

Le comportement est toujours inchangé, le fichier toujours présent

3ème ÉDITION :

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

Il semble y avoir plus dans le nom que mikeaâcnt en regardant la sortie de la tentative python mikeaxc3xa2xc2x81xc2x84cnt , et cette capture d'écran :

4ème EDIT :
Voici la tentative avec un joker :

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

et mes paramètres régionaux :

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=

5e édition :

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

mais aussi le comportement a changé, maintenant ls et cd faites ceci :

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.

Cela s'est produit après les tentatives de suppression, je pense qu'il pourrait s'agir de problèmes NFS, comme suggéré dans l'une des réponses ici par vinc17.

En relation : $ PWD ? (vs répertoire de travail actuel) ?

6ème EDIT :
Ceci est la sortie de lsof et ls -a


rl]$ /usr/sbin/lsof mikeaâ^Á^Äcnt
lsof :erreur d'état sur mikeaâxc2x81xc2x84cnt :aucun fichier ou répertoire de ce type

ci-dessus est faux, voici le bon lsof invocation :(rl est le répertoire parent)

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

7e édition :
le déplacement ne fonctionnera pas (je l'ai essayé avant tout cela, mais je n'ai pas enregistré la sortie), mais il a le même problème que ls et rm avec le fichier.

8ème EDIT :
ceci utilise les caractères hexadécimaux comme suggéré :

 rl]$ ls --show-control-chars | xxd0000000 :6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a mikea......cnt.rl]$ rmdir $'mikea6d696b6561c3a2c281c284636e74
Linux
  1. Comment supprimer des comptes d'utilisateurs avec le répertoire personnel sous Linux

  2. Comment supprimer un répertoire et un dossier sous Linux ?

  3. Comment supprimer tous les fichiers avec une extension particulière dans un dossier particulier ?

  4. Comment supprimer un service dans Kubernetes

  5. Comment supprimer un fichier portant ce nom sous Linux :-]???????q

Comment supprimer un répertoire sous Linux

Comment supprimer (supprimer) le répertoire sous Linux

Comment supprimer des lignes dans Vim / Vi

Comment supprimer un répertoire dans Ubuntu 20.04

Supprimer le répertoire sous Linux - Comment supprimer un dossier de la ligne de commande

Comment copier un répertoire sous Linux