GNU/Linux >> Znalost Linux >  >> Linux

Jak smazat tento nesmazatelný adresář?

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
Linux
  1. Jak přejmenovat adresář v Linuxu

  2. Jak smazat soubor s tímto názvem na linuxu:-]???????q

  3. jak mohu rekurzivně odstranit prázdné adresáře v mém domovském adresáři?

  1. Jak nainstalovat R 3.3.1 do vlastního adresáře?

  2. Jak odstranit všechny soubory s konkrétní příponou v konkrétní složce?

  3. Jak odstranit službu v Kubernetes

  1. Jak vytvořit odkaz na adresář

  2. Jak odstranit všechny soubory v adresáři kromě některých?

  3. Jak cd do adresáře s tímto názvem -2 (začínající pomlčkou)?