GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie lösche ich dieses unauslöschliche Verzeichnis?

Ich habe eine beschädigte Tar-Datei entpackt und es geschafft, ein Verzeichnis
zu erhalten, das ich nicht löschen kann.
Wenn ich versuche, es zu löschen, scheint es, als ob es nicht gefunden werden kann, aber ls zeigt, dass es vorhanden ist, sowohl mit bash als auch mit python erhalte ich ein ähnliches Verhalten, außer direkt nachdem ich versuche, es mit rm -rf zu löschen , ls beschwert, dass es ihn nicht finden kann, dann listet er ihn auf (siehe unten nach rm -rf ). Der find Befehl zeigt, dass die Datei vorhanden ist,
aber mir fällt immer noch keine Möglichkeit ein, sie zu löschen.
Hier sind meine Versuche:

Hier sehen Sie beide ls und find stimme zu, dass wir ein Verzeichnis haben,

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

Aber ich kann es nicht löschen:

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

Ich kann cd dazu und es ist leer:

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


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

siehe unten, das ist keine einfache Datei, sondern ein Verzeichnis, plus ls verhält sich komisch nach dem rm -rf es sagt, dass es die Datei nicht finden kann, und listet sie direkt danach auf:

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

Also das ist der Versuch mit Python, die Datei wird gefunden, aber der Name ist
nicht als löschbarer Name verwendbar:

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'

Selbst wenn ich die Tab-Vervollständigung verwende, ist der Name, den es aufnimmt, nicht verwendbar:

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

Unter Verwendung des Namens, den Python mit Bash anzeigt, bekomme ich Folgendes:

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

Kann ich irgendetwas tun, um dieses beschädigte Verzeichnis loszuwerden?
Das zugrunde liegende Dateisystem (NFS) scheint funktionsfähig zu sein, und es wurden keine anderen Probleme gemeldet, und ich hatte bis zur beschädigten Tar-Datei keine derartigen Probleme.

BEARBEITEN:
Hier wird find verwendet eigene -exec Option zum Aufrufen von 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]$

aber die Datei ist immer noch da (ls beschwert sich, dass er es nicht finden kann, zeigt es dann aber trotzdem an)

2. BEARBEITUNG:

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

Das Verhalten ist immer noch unverändert, die Datei noch vorhanden

3. BEARBEITUNG:

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

Hinter dem Namen scheint mehr zu stecken als mikeaâcnt vom Betrachten der Ausgabe des Python-Versuchs mikeaxc3xa2xc2x81xc2x84cnt , und dieser Screenshot:

4. EDIT:
Das ist der Versuch mit einem 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

und mein Gebietsschema:

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=

5. Bearbeitung:

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

aber auch das Verhalten hat sich geändert, jetzt ls und cd tun Sie dies:

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.

Dies ist nach den Löschversuchen passiert. Ich denke, dass es sich um NFS-Probleme handeln könnte, wie in einer der Antworten hier von vinc17 vorgeschlagen.

Verwandte:$PWD? (im Vergleich zum aktuellen Arbeitsverzeichnis)?

6. EDIT:
Dies ist die Ausgabe von lsof und ls -a


rl]$ /usr/sbin/lsof mikeaâ^Á^Äcnt
lsof:Statusfehler auf mikeaâxc2x81xc2x84cnt:Keine solche Datei oder Verzeichnis

oben ist falsch, hier ist der richtige lsof Aufruf:(rl ist das übergeordnete Verzeichnis)

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

7. Edit:
move wird nicht funktionieren (ich habe es vor all dem versucht, aber ich habe die Ausgabe nicht gespeichert), aber es hat das gleiche Problem wie ls und rm mit der Datei.

8. BEARBEITUNG:
Dies verwendet die Hex-Zeichen wie vorgeschlagen:

 rl]$ ls --show-control-chars | xxd0000000:6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a mikea......cnt.rl]$ rmdir $'mikea6d696b6561c3a2c281c284636e74
Linux
  1. So löschen Sie Benutzerkonten mit Home-Verzeichnis in Linux

  2. So benennen Sie ein Verzeichnis unter Linux um

  3. Wie installiere ich R 3.3.1 im eigenen Verzeichnis?

  4. Wie lösche ich alle Dateien mit einer bestimmten Erweiterung in einem bestimmten Ordner?

  5. Wie kann ich leere Verzeichnisse in meinem Home-Verzeichnis rekursiv löschen?

So entfernen Sie ein Verzeichnis in Linux

So entfernen (löschen) Sie das Verzeichnis in Linux

So löschen Sie Zeilen in Vim / Vi

So löschen Sie ein Verzeichnis in Ubuntu 20.04

Verzeichnis in Linux entfernen – So löschen Sie einen Ordner von der Befehlszeile aus

So kopieren Sie das Verzeichnis unter Linux