破損した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