Questo è il comando convmv che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
convmv - converte i nomi dei file da una codifica all'altra
SINOSSI
conv [Opzioni] FILE(I) ... DIRECTORY(I)
VERSIONI
-f CODIFICA
specificare la codifica corrente del nome file da cui deve essere convertito
-t CODIFICA
specificare la codifica in cui devono essere convertiti i nomi dei file
-i modalità interattiva (chiedi s/n per ogni azione)
-r scorrere ricorsivamente le directory
--nfc
i file di destinazione saranno il modulo di normalizzazione C per UTF-8 (Linux ecc.)
--nfd
i file di destinazione saranno il modulo di normalizzazione D per UTF-8 (OS X ecc.).
--qda , --qto
stai più tranquillo sul "da" o "a" di una ridenominazione (se rovina il tuo terminale
per esempio). Questo infatti non farà altro che sostituire qualsiasi carattere non ASCII
(a byte) con ? e qualsiasi carattere di controllo con * sulla stampa, questo non ha effetto
rinominare l'operazione stessa.
--esecuz command
eseguire il comando dato. Devi citare il comando e #1 sarà sostituito da
il vecchio, #2 con il nuovo nome del file. Utilizzando questa opzione, i target di collegamento rimarranno intatti.
Esempio:
convmv -f latin1 -t utf-8 -r --exec "echo #1 dovrebbe essere rinominato in #2" percorso/a/files
--elenco
elenca tutte le codifiche disponibili. Per ottenere supporto per più codifiche cinesi o giapponesi
installare i pacchetti Perl HanExtra o JIS2K Encode.
--mem
mantenere basso il footprint di memoria non creando un hash di tutti i file. Questo disabilita il controllo
se gli obiettivi dei collegamenti simbolici sono nel sottoalbero. I puntatori di destinazione del collegamento simbolico verranno convertiti
a prescindere. Se converti più centinaia di migliaia o milioni di file la memoria
l'utilizzo di convmv potrebbe aumentare notevolmente. Questa opzione ti aiuterebbe in quel caso.
--non intelligente
per impostazione predefinita convmv rileverà se un nome file è già codificato in UTF8 e lo salterà
file se deve essere eseguita la conversione da un set di caratteri a UTF8. "--nosmart" lo farà
forza anche la conversione in UTF-8 per tali file, che potrebbe risultare in "doppia codifica
UTF-8" (vedi sezione sotto).
--fixdoppio
usando l'opzione "--fixdouble" convmv converte solo i file che lo saranno ancora
UTF-8 codificato dopo la conversione. È utile per correggere i file UTF-8 a doppia codifica.
Tutti i file che non sono UTF-8 o che non risulteranno in UTF-8 dopo la conversione non lo saranno
toccato. Vedi anche il capitolo "Come annullare il doppio UTF-8 ..." di seguito.
--nota
Necessario per rinominare effettivamente i file. Per impostazione predefinita convmv stamperà solo ciò che vuole
da fare.
--parable
Questa è un'opzione avanzata che troveranno le persone che vogliono scrivere un front-end GUI
utile (alcuni altri forse, anche). Convmv stamperà cosa farebbe in un
modo facilmente analizzabile. La prima colonna contiene l'azione o qualche tipo di informazione,
la seconda colonna contiene principalmente il file che deve essere modificato e se appropriato
la terza colonna contiene il valore modificato. Ogni colonna è separata da \0\n
(nuova riga nulla). Ogni riga (un'azione) è separata da \0\0\n (nullbyte nullbyte
nuova linea).
--no-preserve-mtimes
la modifica dei nomi dei file di solito causa l'aggiornamento del mtime della directory principale. Da quando
versione 2 convmv per impostazione predefinita reimposta mtime al vecchio valore. Se il tuo filesystem
supporta la risoluzione in meno di un secondo la parte in meno di un secondo di atime e mtime andrà persa
poiché Perl non lo supporta ancora. Con questa opzione puoi disable la conservazione
delle volte.
--sostituire
se il file a cui rinominare esiste già, verrà sovrascritto se il
altro contenuto del file è uguale.
--non scappare
questa opzione rimuoverà questa brutta % di sequenze esadecimali dai nomi dei file e li trasformerà in
(si spera) caratteri a 8 bit più belli. Dopo --unescape potresti voler fare un set di caratteri
conversione. Queste sequenze come %20 ecc. a volte vengono prodotte durante il download tramite
http o ftp.
--superiore , --inferiore
trasforma i nomi dei file in tutti maiuscoli o tutti minuscoli. Quando il file non è codificato in ASCII,
convmv si aspetta che venga inserito un set di caratteri tramite l'opzione -f.
--mappa=qualche mappatura extra
applicare alcune mappature di caratteri personalizzate, attualmente supportate sono:
ntfs-sfm(-undo), ntfs-sfu(-undo) per la mappatura di caratteri ntfs illegali per Linux
o client cifs Macintosh (vedi MS KB 117258 anche l'opzione di montaggio mapchars di mount.cifs
su Linux).
ntfs-pretty(-undo) per la mappatura di caratteri ntfs illegali a piuttosto legali
versioni giapponesi di loro.
Vedere la map_get_newname() funzione come aggiungere facilmente le proprie mappature se necessario. Lasciami
sapere se pensi che convmv manchi qualche mappatura utile qui.
--dotessi
preoccuparsi del problema i/I senza punti. Anche una versione minuscola di "I" sarà senza punti
mentre anche una versione maiuscola di "i" sarà punteggiata. Questo è un problema per il turco
e azero.
A proposito: il punto in apice della lettera i è stato aggiunto nel Medioevo a
distinguere la lettera (nei manoscritti) dai tratti verticali adiacenti in tali lettere
come u, m e n. J è una forma variante di i che è emersa in questo momento e successivamente
divenne una lettera separata.
--Aiuto
stampa un breve riepilogo delle opzioni disponibili
--opzioni-dump
stampa un elenco di tutte le opzioni disponibili
DESCRIZIONE
conv ha lo scopo di aiutare a convertire un singolo nome di file, un albero di directory e il contenuto
file o un intero filesystem in una codifica diversa. Converte solo i nomi dei file, non
il contenuto dei file. Una caratteristica speciale di convmv è che si occupa anche di
collegamenti simbolici, converte anche il puntatore di destinazione del collegamento simbolico nel caso in cui l'obiettivo del collegamento simbolico sia in corso
anche convertito.
Tutto questo è molto utile quando si vuole passare dalle vecchie versioni locali a 8 bit a UTF-8
locali. È anche possibile convertire le directory in UTF-8 che sono già in parte
Codifica UTF-8. convmv è in grado di rilevare se alcuni file sono codificati in UTF-8 e salteranno
loro per impostazione predefinita. Per disattivare questa intelligenza, usa l'interruttore "--nosmart".
filesystem sicurezza
Quasi tutti i filesystem POSIX non si preoccupano di come vengono codificati i nomi dei file, eccone alcuni
eccezioni:
HFS + on OS X / Darwin
Linux e (la maggior parte?) altri sistemi operativi simili a Unix usano la cosiddetta forma di normalizzazione C
(NFC) per la sua codifica UTF-8 per impostazione predefinita, ma non applicarla. Darwin, la base del
Il sistema operativo Macintosh impone il modulo di normalizzazione D (NFD), in cui alcuni caratteri sono codificati in a
un modo differente. Su OS X non è possibile creare nomi di file NFC UTF-8 perché questo è
impedito a livello di filesystem. Su HFS+ i nomi dei file sono memorizzati internamente in UTF-16 e quando
convertito di nuovo in UTF-8, affinché il sistema BSD sottostante sia gestibile, viene creato NFD.
See http://developer.apple.com/qa/qa2001/qa1173.html per inadempienze. Penso che sia stato molto
cattiva idea e rompe molte cose sotto OS X che si aspettano un normale sistema conforme a POSIX.
Ovunque convmv è in grado di convertire file da NFC a NFD o viceversa, il che rende
l'interoperabilità con tali sistemi è molto più semplice.
JFS
Se le persone montano partizioni JFS con iocharset=utf8, c'è un problema simile, perché
JFS è progettato anche per memorizzare i nomi di file internamente in UTF-16; questo perché JFS di Linux
è davvero JFS2, che era una riscrittura di JFS per OS/2. Le partizioni JFS dovrebbero sempre essere
montato con iocharset=iso8859-1, che è anche l'impostazione predefinita con i recenti kernel 2.6.6. Se
questo non è fatto, JFS non si comporta come un filesystem POSIX e potrebbe succedere che
alcuni file non possono essere creati affatto, ad esempio i nomi dei file nella codifica ISO-8859-1. Soltanto
quando è necessaria l'interoperabilità con OS/2 iocharset dovrebbe essere impostato in base al tuo usato
fascino locale.
NFS4
Nonostante altri filesystem POSIX RFC3530 (NFS 4) impone UTF-8 ma dice anche: "Il
Il profilo nfs4_cs_prep non specifica un modulo di normalizzazione. Una revisione successiva di questo
specifica può specificare un particolare modulo di normalizzazione." In altre parole, se lo si desidera
usa NFS4 potresti trovare abbastanza utili le funzionalità di conversione e normalizzazione di convmv.
GRASSO/VFAT e NTFS
NTFS e VFAT (per i nomi di file lunghi) utilizzano internamente UTF-16 per memorizzare i nomi di file. Dovresti
non è necessario convertire i nomi dei file se si monta uno di quei filesystem. Usa appropriato
opzioni di montaggio invece!
Come a disfare doppio UTF-8 (o altro) codificati i nomi dei file
A volte può capitare di "codificare due volte" certi nomi di file, ad esempio il
i nomi dei file erano già codificati in UTF-8 e hai accidentalmente fatto un'altra conversione da alcuni
set di caratteri su UTF-8. Puoi semplicemente annullarlo convertendo il contrario. Il
from-charset deve essere UTF-8 e to-charset deve essere il from-charset che hai precedentemente
usato accidentalmente. Se usi l'opzione "--fixdouble" convmv farà in modo che solo
verranno elaborati i file che saranno ancora codificati in UTF-8 dopo la conversione e lo farà
lascia intatti i file non UTF-8. Dovresti controllare per ottenere i risultati corretti facendo il
conversione senza "--notest" prima, anche l'opzione "--qfrom" potrebbe essere utile, perché
i nomi dei file double utf-8 potrebbero rovinare il tuo terminale se vengono stampati - loro
spesso contengono sequenze di controllo che fanno cose divertenti con la finestra del terminale. Se tu
non sono sicuro del set di caratteri da cui è stato accidentalmente convertito, l'utilizzo di "--qfrom" è a
un buon modo per modificare la codifica richiesta senza distruggere finalmente i nomi dei file.
Come a riparazione Samba file
Quando nel file smb.conf (di Samba 2.x) non è stato impostato un "set di caratteri" corretto
variabile, i file creati dai client Win* vengono creati nel client
codepage, ad es. cp850 per le lingue dell'Europa occidentale. Di conseguenza i file che
contengono caratteri non ASCII sono rovinati se li si "ls" sul server Unix. Se tu
cambia la variabile "set di caratteri" in seguito in iso8859-1, i file appena creati vanno bene,
ma i vecchi file sono ancora rovinati nella codifica di Windows. In questo caso convmv può
essere utilizzato anche per convertire i vecchi file condivisi da Samba da cp850 a iso8859-1.
A proposito: Samba 3.x finalmente mappa i nomi di file UTF-8 per impostazione predefinita, quindi anche durante la migrazione
da Samba 2 a Samba 3 potrebbe essere necessario convertire i nomi dei file.
Nettalk interoperabilità sicurezza
Quando Netatalk viene passato a UTF-8 che è supportato nella versione 2, allora NON lo è
sufficiente per rinominare i nomi dei file. C'è da fare di più. Vedere
http://netatalk.sourceforge.net/2.0/htmldocs/upgrade.html#volumi-e-nomi-file e il
utilità uniconv di Netatalk per i dettagli.
Usa convmv online utilizzando i servizi onworks.net