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