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
Ssh Mengembalikan Pesan "Permintaan Penerusan x11 Gagal Di Saluran 1"?
Bagaimana Menggunakan Wc Dan Piping Untuk Menemukan Berapa Banyak File Dan Direktori Di Direktori Tertentu?
Linux