GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Menghapus Direktori yang Tak Terhapuskan Ini?

Saya membuka tar file tar yang korup, dan berhasil berakhir dengan beberapa direktori
yang tidak dapat saya hapus,
Jika saya mencoba menghapusnya, sepertinya tidak dapat ditemukan, tetapi ls menunjukkan itu ada, baik dengan bash dan dengan python saya mendapatkan perilaku serupa, kecuali tepat setelah saya mencoba menghapusnya dengan rm -rf , ls mengeluh tidak dapat menemukannya, lalu mencantumkannya (lihat di bawah setelah rm -rf ). find perintah menunjukkan file tersebut ada,
tetapi saya masih tidak dapat memikirkan cara untuk menghapusnya.
Berikut adalah upaya saya:

Di sini Anda melihat keduanya ls dan find setuju kita punya direktori,

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

Tapi saya tidak bisa menghapusnya:

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

Saya bisa cd untuk itu dan itu kosong:

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


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

lihat di bawah ini bukan file sederhana tetapi direktori, plus ls berperilaku lucu setelah rm -rf dikatakan tidak dapat menemukan file, lalu langsung mencantumkannya setelah:

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

Jadi ini percobaan dengan python, file ditemukan, tetapi namanya tidak
dapat digunakan sebagai nama yang dapat dihapus:

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'

bahkan ketika saya menggunakan penyelesaian tab, nama yang diambil tidak dapat digunakan:

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

menggunakan nama yang ditampilkan python dengan bash saya mendapatkan ini:

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

Adakah yang bisa saya lakukan untuk menyingkirkan dir yang rusak ini?
Sistem file (NFS) yang mendasari tampaknya berfungsi dan tidak ada masalah lain yang dilaporkan, dan saya tidak memiliki masalah seperti itu sampai file tar yang rusak.

EDIT:
Ini menggunakan find -exec milik sendiri pilihan untuk memanggil 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]$

tapi filenya masih ada, (ls mengeluh tidak dapat menemukannya, tetapi kemudian tetap menunjukkannya)

EDIT ke-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

Perilaku masih tidak berubah, file masih ada

EDIT ke-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

Tampaknya ada lebih banyak nama daripada mikeaâcnt dari melihat output dari upaya python mikeaxc3xa2xc2x81xc2x84cnt , dan tangkapan layar ini:

EDIT ke-4:
Ini adalah percobaan dengan kartu liar:

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

dan lokal saya:

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=

Suntingan ke-5:

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

tetapi juga perilakunya telah berubah, sekarang ls dan cd lakukan ini:

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.

Ini terjadi setelah upaya untuk menghapus, saya pikir itu mungkin masalah NFS seperti yang disarankan dalam salah satu jawaban di sini oleh vinc17.

Terkait:$PWD? (vs direktori kerja saat ini)?

EDIT ke-6:
Ini adalah output dari lsof dan ls -a


rl]$ /usr/sbin/lsof mikeaâ^Á^Äcnt
lsof:status error pada mikeaâxc2x81xc2x84cnt:Tidak ada file atau direktori seperti itu

di atas salah, ini lsof yang benar doa:(rl adalah direktori induk)

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

Sunting ke-7:
pindah tidak akan berfungsi, (saya mencobanya sebelum semua ini, tetapi saya tidak menyimpan hasilnya), tetapi memiliki masalah yang sama dengan ls dan rm dengan file.

EDIT ke-8:
ini menggunakan karakter hex seperti yang disarankan:

 rl]$ ls --show-control-chars | xxd0000000:6d69 6b65 61c3 a2c2 81c2 8463 6e74 0a mikea......cnt.rl]$ rmdir $'mikea6d696b6561c3a2c281c284636e74
Linux
  1. Cara Menghapus Akun Pengguna dengan Direktori Rumah di Linux

  2. Cara Mengganti Nama Direktori di Linux

  3. Bagaimana Cara Menginstal R 3.3.1 Di Direktori Sendiri?

  1. Cara Menghapus Layanan di Kubernetes

  2. Bagaimana cara menghapus file dengan nama ini di linux:-]???????q

  3. bagaimana saya bisa menghapus direktori kosong secara rekursif di direktori home saya?

  1. Bagaimana cara menghapus direktori dan folder di Linux?

  2. Bagaimana Cara Menghapus Semua File Dengan Ekstensi Tertentu Di Folder Tertentu?

  3. Bagaimana cara melakukan cd ke direktori dengan nama ini -2 (dimulai dengan tanda hubung)?