Harici Sürücü, çöp kutusunu boşaltamıyor, rm bir dosya görüyor, ancak ls -la


9

Harici sürücümdeki bir müzik klasörünü temizliyordum ve ne denersem denemem gereken bir dizin buldum.

GUI aracılığıyla çöp kutusuna koyarsam

“Klasör” öğesi kullanımda olduğundan işlem tamamlanamıyor.

rm -rfTerminalden çıkarmak için kullanırsam

$ rm -rf folder/
rm: folder/: Directory not empty

ls -laİçeriğini kontrol etmek için kullanırsam

$ ls -la
total 512
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

Ben kullanırsanız rm -i *klasör içinde

$ rm -i *
rm: 03 - Ēlusion.mp3: No such file or directory

Herhangi sudo lsof +D folder/bir dosyanın açılıp açılmadığını kontrol etmek için kullanırsam

Program çıkışında hiçbir şey geri gelmiyor.

Disk ve birimi onarmak (ilk yardım) için Disk İzlencesi'ni kullanırsam

Sağlık kontrolü geçti, böylece hiçbir onarım yapılmadı.

MacOS'u yeniden başlatırsam

Sorun devam ediyor.

İlave bilgi:

  • Klasörü sürücü içinde taşıyabilirim, ancak başka bir sürücüye taşıyamam.

  • Klasörü yeniden adlandırabilirim.

  • ls -i *.mp3döner ls: 03 - Ēlusion.mp3: No such file or directoryile aynı rm -i *.mp3.

  • Dosya Finder'da görünmüyor, bu kafa karıştırıcı bir kısım, Terminal'in sahip olabileceği dosya adı görüntüleme sorunu ne olursa olsun (her zaman kullanmak için ayarladım Unicode - UTF-8), oyunda daha fazla güç olduğunu düşünüyorum.

Sorulara yanıt olarak, hayır, ls -ibhiçbir şey döndürmez.

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

Görünüşe göre içinde bir şey var ama ls -lagöremiyordum, rm -idosya adıyla garipken?

get info GUI içerik menüsü aracılığıyla klasörde 1 öğe olduğunu onayladı, ancak sıfır bayt ile ve kesinlikle bulucuda görünmüyor.

Bu noktada ne yapacağımdan emin değilim. Çok takdir Yardım!

(Harici sürücüde 10.13.4 + ExFAT kullanma)


1
İstediğiniz her şeyi yedeklemeyi düşündünüz mü - zaten zaten yedeklenmişti ... sonra o sürücüyü baştan başlamak için tamamen yeniden biçimlendirdiniz mi?
Güneş Mike

ls -bDosyayı gösteriyor mu ? Eğer öyleyse, ls -biinode almak ve aşağıdaki cevabı takip edebilir veya dönüşümlü olarak -bçıktıdaki dosya adını kopyalayabilirsiniz .
Reid

Temel sorunun dosya adı ile olmadığına inanıyorum, ls -bi *.mp3OP'de gösterilenle aynı sonucu gösterin.
bitinn

Yanıtlar:


10

Sorun adında bir dosyaya neden olduğu görünmektedir 03 - Ēlusion.mp3 dizin adında içinde yer klasöre .

Terminal.app dosya adlarında aksan işaretleri oluşturamadığından - evet, ama bu sizin için en basit çözümü sağlama kapsamının ötesinde - dosya adını (şimdiye kadar duymadığım bir şey) gizleyerek başarısızlığını gizliyor ; Belki de High Sierra'nın /.file, /.volfs ve 64-bit inode'larındaki değişiklikleri? Bulucu tarafından var olmadığı için çekişme. Açıkçası, öyle. Bunu nasıl değiştireceğiniz aşağıda açıklanmıştır:

İlk olarak, dosyanın inode numarasını belirleyin. Terminal.app içinde, cd"klasör" dizinine gidin ve şu komutu verin:ls -i *.mp3

Yanıtın sol sütununda sağlanan inode'un sayı dizesini kopyalayın;

12345678 03 - E ̄lusion.mp3

--ve bu komutu, terminalin doğru şekilde işleyebileceği bir adla yeniden adlandırır:

find . -inum 12345678 -exec mv {} deletemenow \;

- her ikisi de süslemenize en uygun şekilde atabileceğiniz "klasör" klasöründeki "deletemenow" dosyasını verir.


Vay canına, bu çok korkunç bir böcek.
chrylis -on strike-

2
Bunun doğru olduğunu düşünmüyorum. Terminal, oluşturamayacağı tek karakterleri gizleyebilir , ancak metnin tüm satırını kaldırmaz.
duskwuff -inactive-

1
@duskwuff Her iki durumda da dosya adının sorunlara neden olduğu görülüyor, bu nedenle bu potansiyel bir çözüm.
JAB

Üzgünüz ama sorun bundan daha karmaşık görünüyor: Denedim $ ls -i *.mp3, geri dönüyor ls: 03 - Ēlusion.mp3: No such file or directory.
bitinn

1
ls -iKabuk joker karakter genişletmesinin karışmasını önlemek için dizin içinde çalışabilir misiniz ?
nohillside

9

Bu özete gelmem uzun sürdü, ama bence kesin cevap bu.

Sorunumun nedeni iyi bilinen bir sorundur :

OS X, hem dosya adlarını normalleştirdiği hem de daha yaygın NFC yerine NFD kullandığı için garip olanıdır .

Tarihsel olarak (o eski değil, 10.11 öncesi), OS X + HFS + tüm dosya adlarında NFD formunu zorlar ve NFD sonucunu yalnızca komutlardan ve sistem çağrılarından alırsınız.

Daha sonra işler değişmeye başlar, 10.11'de, bazı sistem çağrısı sonuçları NFC'ye normalleştirilir ve bu da Windows ve Linux ile aynı hizaya gelir, ancak OS X'te NFD bekleyen bazı programları kırmak pahasına.

Ancak macOS 10.13 + AFPS'in piyasaya sürülmesinden bu yana, davranış tekrar değişir: Apple , ekran ve sistem çağrılarında NFD'ye normalleştirmek istediğine karar verir , ancak orijinal dosya adlarını olduğu gibi bırakın (böylece hem NFC hem de NFD desteklenir, ancak Finder'daki dosya adı veya lsTerminal'de kopya sonucu, NFD formunu alırsınız).

ExFAT kullanarak harici bir sürücüye NFD dosya adına sahip bir dosya koyana kadar bu harika bir şeydir (4GB + dosya boyutu desteğine sahip tek çapraz macOS / Windows biçimi olduğundan): macOS 10.13 dosyanızın bir şekilde NFC formatında olması gerektiğine inanıyor, dışarı çıktı.

Aslında, burada hızlı bir test, exFAT sürücümde 3 dosya ile Windows'ta bir klasör var:

resim açıklamasını buraya girin

  • test.mp3
  • Ēlusion.mp3( ĒNFC'de)
  • 03 - Ēlusion( ĒNFD cinsinden)

( Tam unicode'u buraya kopyalayabilirsiniz )

Onları macOS'uma bağladığımda, gördüğüm şey bu:

resim açıklamasını buraya girin

ve ls -laibsonuç:

$ ls -laib
total 46592
2762318 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 ..
1572961 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 Ēlusion.mp3
1572871 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 test.mp3

Gördüğünüz gibi NFC dosyası var, ancak NFD dosyası eksik.

OS X'teki NFC / NFD sorununun farkında olsanız bile , exFAT harici sürücünün bu sorunla karşı karşıya gelmesini beklemeyebilirsiniz (NFC iyi, ancak NFD yanıyor).

Ama müzik dosyamın ilk etapta NFD dosya adını kullanmasına ne sebep olabilirdi:

  • Başlangıçta bu müzik dosyasını 10.9 / 10.10'da NFD dosya adını uygulayan eski bir Mac ile indirdim.
  • Bir noktada onları NFC / NFD'yi zorlamayan bir Windows + NTFS sürücüsüne götürdüğüm için orijinal NFD dosya adı korunur.
  • Şimdi bu dosyayı exFAT sürücüsü kullanarak macOS 10.13 + APFS'ime geri taşımak istiyorum (exFAT, NTFS ile aynı UTF-16 kuralını destekler).
  • Cehennem kopuyor.

Dosyayı ağa bağlı sürücü veya TeamViewer ile kopyalayabilirdim ve iyi olurdu, ancak exFAT macOS'ta bu hatayı tetikliyor.

Dersler:

  • Unicode dosya adı hala bir tehdittir.
  • Aslında bu sorunu gidermek için bir Windows / Linux'a ihtiyacınız var (eğer durum dosyanız exFAT harici bir sürücüdeyse).

@bitlinn: Yorumumdaki duskwulff adresine gönderilen ikinci bağlantıyı tıklayın ve orada bulacağınız Apfelstrudel unicode normalleştirme aracını deneyin. ExFAT ile anlamsız APFS için çok yararlı. Yoksa öyle mi...?
Doc

1
@DocG. bu konu başlangıçta düşündüğümden biraz daha karmaşık, ama cevabımı tekrar güncelledim!
bitinn

Evet, sonunda bunu yapabileceğini düşündüm. Error 36HFS olmayan sistemlerde dosya özniteliklerini ayırma hakkında daha fazla bilgi için "dosyaları ileri geri windows mac error 36" gibi bir şeyle ilgili daha önce yaptığım açıklamaya bakın ve bir web araması yapın. Bu, Sistem 10.6 geldiğinden beri bilinen başka bir MacOS / OS X dosya adlandırma sorunudur. Unicode normalizasyonu ve dot_underscore öznitelik ayrımı arasında, bir çift hata heck yaşadınız. Dot_clean komutunun bir şansı olup olmadığından şüpheliyim.
Doc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.