2012-11-08 9 views
8

Ho un problema con alcuni file nel terminale Linux (Ubuntu), con accenti nei nomi. Ad esempio:Nome file UTF-8 restituito Non trovato nel terminale linux

$ ls dir/ 
criação.png 

Quindi, il terminale restituisce quel file, quindi esiste. Ora vediamo se il file esiste, con questo semplice comando:

$ [ -f criação.png ] && echo "File Exist" || echo "Not Exist" 
Not Exist 

Come si può vedere, "Non esiste". Ora, ho la stessa cartella e di file su OSX, allora io eseguire lo stesso comando e restituisce questo:

$ [ -f criação.png ] && echo "File Exist" || echo "Not Exist" 
File Exist 

Conosco un po 'di locale:

$ locale 
LANG=en_US.UTF-8 
LANGUAGE= 
LC_CTYPE=en_US.UTF-8 
LC_NUMERIC="en_US.UTF-8" 
LC_TIME="en_US.UTF-8" 
LC_COLLATE="en_US.UTF-8" 
LC_MONETARY="en_US.UTF-8" 
LC_MESSAGES="en_US.UTF-8" 
LC_PAPER="en_US.UTF-8" 
LC_NAME="en_US.UTF-8" 
LC_ADDRESS="en_US.UTF-8" 
LC_TELEPHONE="en_US.UTF-8" 
LC_MEASUREMENT="en_US.UTF-8" 
LC_IDENTIFICATION="en_US.UTF-8" 
LC_ALL= 

su Linux, " Not Exist ", su OSX," File Exist "... Qualcuno, sapete come risolverlo?

Forse questi possono aiutare:
http://nedbatchelder.com/blog/201106/filenames_with_accents.html
http://www.ruby-forum.com/topic/279105

AGGIORNAMENTO - Soluzione

ho finalmente trovato una soluzione a questo problema. È necessario rinominare i file da NFD a NFC, ecco il comando per correggere tutti i file:

cd dir/ 
convmv -r -i -f utf8 -t utf8 --nfc --notest . 

Fonte: http://blog.hbis.fr/2010/08/30/macox-utf8_filenames_normalization/

+0

Il mio problema è anche con nginx. Es: '2012/11/08 17:05:34 [errore] 12102 # 0: * 128 aperto()"/usr/share/nginx/www/wp-content/uploads/2012/09/celular-inclusão- digital.png "non riuscito (2: nessun file o directory), client: 66.249.76.145, server: sito.com, richiesta:" GET/wp-content/uploads/2012/09/celular-inclus% C3% A3o- digital.png HTTP/1.1 ", host:" site.com "' – mateus007

+1

La soluzione è corretta (MacOS usa NFD ma praticamente tutto il resto usa NFC, causando problemi di compatibilità quando MacOS è coinvolto), ma dovresti postarlo come risposta . La tua risposta è più corretta di quella che hai accettato! – Celada

+0

'convmv -r -f iso8859-1 -t utf8 --nfc --notest .' Risolve i miei nomi di file con accento caricato da SFTP da Windows a Linux. –

risposta

1

Uno dei motivi potrebbe essere il nome del file utilizza una forma diversa unicode normalizzazione caratteri con segni combinati di quelli che usi per digitare il nome. Vedi Unicode Equivalence.

+0

Sì, ho provato alcuni comandi, quindi ho accidentalmente trovato un "trucco" per funzionare: 'mv criac <0327> a <0303> o.png criação.png' Ora il file esiste. È qualcosa su NFC e NFD – mateus007