Rozbalil jsem poškozený soubor tar a podařilo se mi skončit s nějakým adresářem
, který nemohu smazat,
Pokud se jej pokusím smazat, zdá se, že jej nelze najít, ale ls
ukazuje, že je přítomen, jak s bash, tak s pythonem, chovám se podobně, až na to, že se to pokusím odstranit pomocí rm -rf
, ls
stěžuje si, že to nemůže najít, pak to vypíše (viz níže za rm -rf
). find
příkaz ukazuje, že soubor je přítomen,
ale stále mě nenapadá způsob, jak jej odstranit.
Zde jsou mé pokusy:
Zde vidíte oba ls
a find
souhlasím, že máme adresář,
rl]$ ls
mikeaâ??cnt
rl]$ find -maxdepth 1 -type d -empty -print0
./mikeaâcnt
Ale nemohu to smazat:
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
Umím cd
a je prázdný:
rl]$ cd mikeaâ^Á^Äcnt/
mikeaâ^Á^Äcnt]$ ls
mikeaâ^Á^Äcnt]$ pwd
.../rl/mikeaâcnt
mikeaâ^Á^Äcnt]$ cd ../
rl]$ ls
mikeaâ??cnt
viz níže, že to není jednoduchý soubor, ale adresář, plus ls
chová se legračně po rm -rf
říká, že soubor nemůže najít, a pak jej vypíše hned za:
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]$
Takže toto je pokus s pythonem, soubor je nalezen, ale název není
použitelný jako název, který lze smazat:
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'
i když použiji doplňování tabel, název, který zaznamená, není použitelný:
rl]$ rm -rf mikeaâ^Á^Äcnt
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
pomocí názvu, který python zobrazuje s bash, dostanu toto:
rl]$ rm -rf "mikeaxc3xa2xc2x81xc2x84cnt"
rl]$ ls
ls: cannot access mikeaâcnt: No such file or directory
mikeaâ??cnt
Mohu něco udělat, abych se zbavil tohoto poškozeného adresáře?
Zdá se, že základní souborový systém (NFS) je funkční a nebyly hlášeny žádné další problémy a já jsem žádné takové problémy neměl až do poškozeného souboru tar.
EDIT:
Zde je použití find
vlastní -exec
možnost zavolat 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]$
ale soubor tam stále je, (ls
stěžuje si, že to nemůže najít, ale pak to stejně zobrazí)
2. ÚPRAVA:
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
Chování je stále nezměněno, soubor je stále přítomen
3. ÚPRAVA:
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
Zdá se, že v názvu je více než mikeaâcnt
z pohledu na výstup pokusu o python mikeaxc3xa2xc2x81xc2x84cnt
a tento snímek obrazovky:
4. EDITACE:
Toto je pokus s divokou kartou:
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
a moje národní prostředí:
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. úprava:
rl]$ ls -i
ls: cannot access mikeaâcnt: No such file or directory
? mikeaâ??cnt
ale také se změnilo chování, nyní ls
a cd
udělejte toto:
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.
Stalo se to po pokusech o smazání, myslím si, že by to mohly být problémy s NFS, jak navrhuje vinc17 v jedné z odpovědí zde.
Související:$PWD? (vs aktuální pracovní adresář)?
6. ÚPRAVA:
Toto je výstup lsof
a ls -a
rl]$ /usr/sbin/lsof mikeaâ^Á^Äcnt
lsof:chyba stavu na mikeaâxc2x81xc2x84cnt:Žádný takový soubor nebo adresář
výše je špatně, zde je správný lsof
invocation:(rl je nadřazený adresář)
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. úprava:
přesun nebude fungovat (zkoušel jsem to před tím vším, ale neuložil jsem výstup), ale má to stejný problém jako ls
a rm
se souborem.
8. ÚPRAVA:
toto používá hexadecimální znaky, jak je navrženo:
rl]$ ls --show-control-chars | xxd0000000:6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a mikea......cnt.rl]$ rmdir $'mikea6d696b6561c3a2c281c284636e74
Ssh vrací zprávu „x11 Požadavek na předání selhal na kanálu 1“?
Jak pomocí WC a potrubí zjistit, kolik souborů a adresářů je v určitém adresáři?
Linux