Saya sedang membersihkan folder musik di drive eksternal saya dan menemukan direktori yang tidak dapat saya hapus apa pun yang saya coba.
Jika saya memasukkannya ke tempat sampah melalui GUI
Operasi tidak dapat diselesaikan karena item "folder" sedang digunakan.
Jika saya gunakan rm -rf
untuk menghapusnya melalui terminal
$ rm -rf folder/
rm: folder/: Directory not empty
Jika saya gunakan ls -la
untuk memeriksa isinya
$ ls -la
total 512
drwxrwxrwx 1 user staff 131072 Jan 3 2017 .
drwxrwxrwx 1 user staff 131072 Jan 3 2017 ..
Jika saya gunakan rm -i *
di dalam folder
$ rm -i *
rm: 03 - Ēlusion.mp3: No such file or directory
Jika saya gunakan sudo lsof +D folder/
untuk memeriksa apakah ada file yang dibuka
Tidak ada yang kembali saat keluar dari program.
Jika saya menggunakan Disk Utility untuk memperbaiki (pertolongan pertama) disk dan volume
Pemeriksaan kesehatan berlalu sehingga tidak ada perbaikan yang dimulai.
Jika saya reboot macOS
Masalahnya masih ada.
Informasi tambahan:
Saya dapat memindahkan folder di dalam drive, tetapi tidak ke drive lain.
Saya bisa mengganti nama folder.
ls -i *.mp3
kembalils: 03 - Ēlusion.mp3: No such file or directory
, sama denganrm -i *.mp3
.File tidak muncul di Finder, itu bagian yang membingungkan, apa pun masalah tampilan nama file Terminal bisa (saya selalu mengatur untuk menggunakan
Unicode - UTF-8
), saya pikir ada kekuatan yang lebih berperan.
Menanggapi pertanyaan, tidak, ls -ib
tidak mengembalikan apa pun.
$ ls -i
$ ls -ib
$ ls -laib
total 512
2762318 drwxrwxrwx 1 user staff 131072 Jan 3 2017 .
2685260 drwxrwxrwx 1 user staff 131072 Jan 3 2017 ..
Jadi ternyata ada sesuatu di dalamnya tetapi ls -la
tidak bisa melihatnya, sementara rm -i
aneh dengan nama file?
get info
melalui menu konteks GUI memang mengkonfirmasi ada 1 item dalam folder, tetapi dengan nol byte, dan tentu saja tidak muncul di finder.
Saya tidak yakin apa yang harus dilakukan pada saat ini. Bantuan sangat dihargai!
(Menggunakan 10.13.4 + ExFAT pada drive eksternal)
sumber
ls -b
menunjukkan file? Jika demikian, Anda bisals -bi
mendapatkan inode dan ikuti jawaban di bawah ini, atau secara bergantian cukup salin nama file di-b
output.ls -bi *.mp3
tampilkan hasil yang sama seperti yang ditunjukkan pada OP.Jawaban:
Masalahnya tampaknya disebabkan oleh file bernama 03 - Ēlusion.mp3 yang terletak di dalam folder bernama direktori .
Karena Terminal.app tidak dapat membuat tanda diakritik dalam nama file - well, memang, tapi itu di luar ruang lingkup memberikan solusi paling sederhana untuk Anda - ia menyembunyikan kegagalannya dengan menyembunyikan nama file (sesuatu yang belum pernah saya dengar sebelumnya sekarang) ; mungkin perubahan High Sierra-nya ke /.file, /.volfs dan 64-bit inode? Tunggu-- tidak apa-apa; edit Anda untuk pertanyaan Anda memberi tahu saya salah paham dengan Anda.) Lagi pula, keberadaan file diketahui, bersama dengan ironisnya anggapan oleh Finder bahwa itu tidak ada. Jelas itu terjadi. Berikut cara mengubahnya:
Pertama, tentukan nomor inode file. Di Terminal.app,
cd
ke direktori "folder" dan berikan perintah ini:ls -i *.mp3
Salin string nomor dari inode yang disediakan di kolom sebelah kiri dari respons, yang akan menjadi seperti itu
12345678 03 - E ̄lusion.mp3
--dan menaruhnya di perintah ini, yang akan mengubahnya menjadi sesuatu yang terminal dapat render dengan benar:
find . -inum 12345678 -exec mv {} deletemenow \;
--memberikan Anda file "deletemenow" di folder "folder," yang keduanya dapat Anda buang dengan cara apa pun yang paling sesuai dengan keinginan Anda.
sumber
$ ls -i *.mp3
, ia kembalils: 03 - Ēlusion.mp3: No such file or directory
.ls -i
dalam direktori untuk mencegah ekspansi wildcard shell mengganggu?Butuh waktu lama bagi saya untuk sampai pada ringkasan ini, tetapi saya pikir itu adalah jawaban yang pasti.
Penyebab masalah saya adalah yang terkenal :
Secara historis (tidak setua itu, era sebelum 10.11), OS X + HFS + memberlakukan formulir NFD pada semua nama file , dan Anda hanya akan mendapatkan hasil NFD dari perintah dan panggilan sistem.
Kemudian segalanya mulai berubah, pada 10.11, beberapa hasil panggilan sistem dinormalisasi ke NFC , yang membuatnya sejajar dengan Windows dan Linux, tetapi dengan mengorbankan beberapa program yang mengharapkan NFD pada OS X.
Tetapi sejak diperkenalkannya macOS 10.13 + AFPS, perilaku berubah lagi: Apple memutuskan ingin menormalkan kembali ke NFD pada tampilan dan panggilan sistem , tetapi biarkan nama file aslinya apa adanya (sehingga NFC dan NFD didukung, tetapi jika Anda memilih nama file di Finder atau salin
ls
hasil di Terminal, Anda mendapatkan formulir NFD).Ini semua hebat, sampai Anda meletakkan file dengan nama file NFD di drive eksternal menggunakan exFAT (karena itu satu-satunya format cross-macOS / Windows dengan dukungan ukuran file 4GB +): macOS 10.13 entah bagaimana percaya file Anda harus dalam format NFC, jadi itu disadap.
Sebenarnya, ini adalah tes cepat, saya memiliki folder di Windows pada drive exFAT saya dengan 3 file:
test.mp3
Ēlusion.mp3
(Ē
dalam NFC)03 - Ēlusion
(Ē
dalam NFD)(Anda dapat menyalin kode kunci yang tepat di sini )
Ketika saya memasangnya di macOS saya, inilah yang saya lihat:
dan
ls -laib
hasil:Seperti yang Anda lihat, file NFC ada tetapi file NFD hilang.
Bahkan jika Anda mengetahui masalah NFC / NFD pada OS X , Anda mungkin tidak mengharapkan drive eksternal exFAT untuk menghadapi masalah ini dengan cara yang berlawanan (NFC baik-baik saja, tetapi NFD sedang terengah-engah).
Tapi apa yang bisa menyebabkan file musik saya menggunakan nama file NFD di tempat pertama:
Saya bisa menyalin file melalui drive jaringan atau TeamViewer, dan itu akan baik-baik saja, tetapi exFAT memicu bug ini di macOS.
Pelajaran:
sumber
Error 36
dan melakukan pencarian web untuk sesuatu seperti "memindahkan file bolak-balik windows mac error 36" untuk informasi lebih lanjut tentang memisahkan atribusi file pada sistem non-HFS. Ini telah (lain) dikenal masalah penamaan file MacOS / OS X sejak Sistem 10.6 tiba. Antara normalisasi Unicode dan pemisahan atribut dot_underscore, Anda mengalami heck bug ganda. Saya ragu apakah perintah dot_clean memiliki peluang.