GNU/Linux >> Linux の 問題 >  >> Linux

この消えないディレクトリを削除する方法は?

破損したtarファイルのtarを解除し、削除できないディレクトリが
あることになりました。
削除しようとすると、見つからないようですが、ls は、bashとpythonの両方で存在することを示していますが、rm -rfで削除しようとした直後を除いて、同様の動作が得られます。 、ls 見つからないと文句を言うと、リストに表示されます(rm -rfの後に以下を参照) )。 find コマンドはファイルが存在することを示しますが、
それでも、ファイルを削除する方法を考えることができません。
これが私の試みです:

ここに両方の​​lsが表示されます およびfind ディレクトリがあることに同意します

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

しかし、削除することはできません:

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

cdできます それに、それは空です:

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


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

以下を参照してください。これは単純なファイルではなく、ディレクトリとlsです。 rm -rfの後でおかしな動作をします ファイルが見つからないと表示され、直後に一覧表示されます:

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

これはPythonでの試みであり、ファイルは見つかりましたが、名前を削除できる名前として
使用できません:

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'

タブ補完を使用しても、取得した名前は使用できません:

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

Pythonがbashで示す名前を使用すると、次のようになります。

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

この破損したディレクトリを取り除くためにできることはありますか?
基盤となるファイルシステム(NFS)は機能しているようで、他の問題は報告されていません。破損したtarファイルまでそのような問題は発生していません。

編集:
ここではfindを使用しています 独自の-exec 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]$

しかし、ファイルはまだそこにあります(ls 見つからないと文句を言うが、とにかく表示する)

2回目の編集:

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

動作は変更されておらず、ファイルは引き続き存在します

3番目の編集:

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

名前にはmikeaâcntよりも多くのことがあるようです Pythonの試みの出力を見てからmikeaxc3xa2xc2x81xc2x84cnt 、およびこのスクリーンショット:

4番目の編集:
これはワイルドカードを使った試みです:

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

と私のロケール:

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回目の編集:

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

動作も変更され、ls およびcd これを行う:

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.

これは削除を試みた後に発生しました。これは、vinc17による回答の1つで示唆されているように、NFSの問題である可能性があると考えています。

関連:$ PWD? (vs現在の作業ディレクトリ)?

6番目の編集:
これはlsofの出力です およびls -a


rl] $ / usr / sbin/lsofmikeaâ^Á^Äcnt
lsof:mikeaâxc2x81xc2x84cntのステータスエラー:そのようなファイルまたはディレクトリはありません

上記は間違っています。正しいlsofは次のとおりです。 呼び出し:(rlは親ディレクトリです)

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番目の編集:
移動は機能しません(この前に試しましたが、出力を保存しませんでした)が、lsと同じ問題があります およびrm ファイルを使用します。

8番目の編集:
これは提案されているように16進文字を使用しています:

  rl] $ ls --show-control-chars | xxd0000000:6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a mikea ...... cnt.rl] $ rmdir $'mikea6d696b6561c3a2c281c284636e74
Linux
  1. Linuxでホームディレクトリのユーザーアカウントを削除する方法

  2. Linuxでディレクトリとフォルダを削除する方法は?

  3. ディレクトリへのリンクを作成する方法

  1. Linux でこの名前のファイルを削除する方法:-]???????q

  2. 一部を除くディレクトリ内のすべてのファイルを削除する方法は?

  3. ホームディレクトリの空のディレクトリを再帰的に削除するにはどうすればよいですか?

  1. 自分のディレクトリにR3.3.1をインストールする方法は?

  2. 特定のフォルダ内の特定の拡張子を持つすべてのファイルを削除するにはどうすればよいですか?

  3. Kubernetesでサービスを削除する方法