External Drive, impossibile cancellare il cestino, rm vede un file, ma ls -la no

9

Stavo cancellando una cartella musicale nel mio disco esterno e ho trovato una directory che non posso cancellare, non importa quello che provo.

Se lo metto nel cestino attraverso la GUI

The operation can’t be completed because the item “folder” is in use.

Se utilizzo rm -rf per rimuoverlo tramite terminale

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

Se utilizzo ls -la per controllarne il contenuto

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

Se utilizzo rm -i * nella cartella

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

Se utilizzo sudo lsof +D folder/ per controllare se sono aperti file

Nulla ritorna all'uscita del programma.

Se utilizzo Utility Disco per riparare (primo soccorso) disco e volume

Il controllo dello stato di sicurezza è stato inoltrato quindi non è stata avviata alcuna riparazione.

Se riavvio macOS

Il problema persiste.

Informazioni aggiuntive:

  • Posso spostare la cartella all'interno dell'unità, ma non su un'altra unità.

  • Posso rinominare la cartella.

  • ls -i *.mp3 restituisce ls: 03 - Ēlusion.mp3: No such file or directory , come rm -i *.mp3 .

  • Il file non viene visualizzato in Finder, è una parte confusa, qualunque problema di visualizzazione del nome file Terminal possa avere (l'ho sempre impostato per usare Unicode - UTF-8 ), penso che ci sia più forza in gioco.

In risposta alle domande, no, ls -ib non restituisce nulla.

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

Quindi apparentemente c'è qualcosa al suo interno ma ls -la non può vederlo, mentre rm -i è strano con il nome file?

get info tramite il menu di scelta rapida della GUI ha confermato la presenza di 1 elemento nella cartella, ma con zero byte, e certamente non compare nel finder.

Non sono sicuro di cosa fare a questo punto. Aiuto molto apprezzato!

(Utilizzo di 10.13.4 + ExFAT su un'unità esterna)

    
posta bitinn 12.07.2018 - 20:40
fonte

2 risposte

10

Il problema sembra essere causato da un file denominato 03 - Ēlusion.mp3 situato all'interno della directory denominata cartella .

Poiché Terminal.app non è in grado di eseguire il rendering di segni diacritici nei nomi di file - beh, lo è, ma è oltre lo scopo di fornire la soluzione più semplice per te - nasconde il suo fallimento nascondendo il nome file (qualcosa di non udito di io prima di adesso, forse i cambiamenti di High Sierra in /.file, /.volfs e inode a 64 bit? Aspetta ... non importa, la tua modifica alla tua domanda mi dice che ti ho frainteso.) Comunque, l'esistenza del file è nota, lungo con la contesa ironica del Finder che non esiste. Ovviamente, lo fa. Ecco come cambiarlo:

Per prima cosa, determina il numero di inode del file. In Terminal.app, cd nella directory "cartella" ed emetti questo comando: ls -i *.mp3

Copia la stringa numerica dell'inode fornita nella colonna di sinistra della risposta, che sarà qualcosa di simile

12345678 03 - E ̄lusion.mp3

- e inseriscilo in questo comando, che lo rinominerà in qualcosa che il terminale può visualizzare correttamente:

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

- dandoti il file "deletemenow" nella cartella "cartella", entrambi i quali puoi disporre nel modo che preferisci.

    
risposta data 12.07.2018 - 22:18
fonte
9

Mi è voluto molto tempo per venire a questo riepilogo, ma penso che sia la risposta definitiva.

La causa del mio problema è una nota :

OS X is the odd one out, both in that it normalizes file names and in that it uses NFD instead of the more common NFC.

Storicamente (non quel vecchio periodo precedente al 10.11), OS X + HFS + applica il modulo NFD su tutti i nomi di file e otterrai solo risultati NFD da comandi e chiamate di sistema.

Quindi le cose iniziano a cambiare, in 10.11, alcuni risultati delle chiamate di sistema sono normalizzati in NFC , che lo rende in linea con Windows e Linux, ma a scapito della rottura di alcuni programmi che prevedono NFD su OS X.

Ma dall'introduzione di macOS 10.13 + AFPS, il comportamento cambia di nuovo: Apple decide di volere normalizza su NFD su display e system calls , ma lascia il nome file originale così com'è (quindi sia NFC che NFD sono supportati, ma se selezioni il nome file in Finder o copia ls in Terminal, tu ottenere il modulo NFD).

Tutto questo è fantastico, fino a quando non metti un file con nome file NFD in un'unità esterna usando exFAT (poiché è l'unico formato cross-macOS / Windows con supporto per dimensioni file 4 GB +): macOS 10.13 in qualche modo crede che il tuo file deve essere in formato NFC, quindi è stato eliminato.

In effetti, ecco un test rapido, ho una cartella in Windows sulla mia unità exFAT con 3 file:

  • test.mp3
  • Ēlusion.mp3(ĒinNFC)
  • 03-Ēlusion(ĒinNFD)

(Puoicopiare l'esatto codice unicode )

Quando li monto sul mio macOS, questo è quello che vedo:

els-laibrisultato:

$ls-laibtotal465922762318drwxrwxrwx1userstaff131072Jan32017.2685260drwxrwxrwx1userstaff131072Jan32017..1572961-rwxrwxrwx1userstaff11672464Aug232014Ēlusion.mp31572871-rwxrwxrwx1userstaff11672464Aug232014test.mp3

Comepuoivedere,ilfileNFCèpresentemamancailfileNFD.

Ancheseseiaconoscenzadel problema NFC / NFD su OS X , potresti non aspettatevi che il disco esterno exFAT affronti questo problema nel modo opposto (NFC va bene, ma NFD è pant-on-fire).

Ma cosa avrebbe potuto far sì che il mio file musicale usasse il nome file NFD:

  • Originariamente ho scaricato questo file musicale su 10.9 / 10.10 con un Mac precedente, che applica il nome file NFD.
  • A un certo punto li trasferisco su un'unità Windows + NTFS, che non impone NFC / NFD, quindi il nome file originale NFD viene conservato.
  • Ora voglio spostare questo file sul mio macOS 10.13 + APFS usando un'unità exFAT (exFAT supporta la stessa convenzione UTF-16 di NTFS).
  • L'inferno si scatena.

Avrei potuto copiare il file tramite l'unità di rete o TeamViewer, e andrebbe bene, ma exFAT sta attivando questo bug su macOS.

Lezioni:

  • Il nome file Unicode è ancora una minaccia.
  • In realtà hai bisogno di un sistema operativo Windows / Linux per risolvere questo problema (se la situazione è che il tuo file si trova su un'unità esterna exFAT).
risposta data 13.07.2018 - 08:18
fonte

Leggi altre domande sui tag