Come rinominare in modo ricorsivo file / cartelle per rendere i loro nomi compatibili con Windows?


11

Ho un sacco di file su una scatola di Ubuntu, che hanno vari personaggi nei loro nomi di file che Windows non accetta (principalmente ":" e "*", ma forse altri).

Qual è il modo più semplice per ottenere tutti questi rinominati e spostati su un computer Windows? Va bene sostituire questi personaggi con qualcosa come "[due punti]" e "[asterisco]".


1
Dovresti evitare tali nomi anche sotto Linux (specialmente *).
cYrus,

4
@cYrus Dipende da come gestisci i file. Immagino sia solo un problema con gli script e con le shell. Sono su OS X e l'unico personaggio proibito è :, che è abbastanza male. È utile assegnare un nome ai documenti in base al loro contenuto e, se il nome di un articolo termina con una domanda, dovrebbe esserlo anche il nome del file.
Daniel Beck

@cYrus e io nel mio software, ma alcuni software sono stati scritti da persone che non lo fanno. Ad esempio, qmail utilizza: in quasi tutti i nomi di file che crea.
Roman,

@Daniel Beck: Certo, ma sfortunatamente avere un file system che supporta tali nomi non è abbastanza in quanto puoi usare programmi che rovinano tutto. Non uso nemmeno gli spazi.
cYrus,

2
@Steven bella domanda! Penso che Windows sarebbe leggermente più utile, in quanto potrebbe accadere che qualcuno riceva i file su Windows e debba ripararli su quella piattaforma.
Peltier,

Risposte:


4

Dai un'occhiata al nome e alla disintossicazione di Glindra .

Le utilità dei file Glindra possono essere installate su Windows o Linux. Esempi di pulizia dei nomi dei file su Windows:

rena *.* -portable

rena *.* -safe

  • mappe sicure che portano trattini (trattini) a caratteri di sottolineatura.
    Comprime gli spazi.
    Mappa caratteri problematici come * ?: [] "<> | () {} da sottolineare.
  • -portable
    Esegue le stesse operazioni di clean-up di -safe e inoltre:
    mappa tutti i caratteri a 8 bit dalla metà superiore dell'alfabeto latino 1 a ragionevoli caratteri di fallback a 7 bit.
    Mappa i caratteri di virgoletta singola '' ´ per sottolineare.

Fonte: correzione dei nomi dei file Unix / Linux / POSIX: caratteri di controllo (come Newline), trattini iniziali e altri problemi


Quella pagina mostra una 404. Copia cache di Google .
Daniel Beck

Questo è uno spettacolo fantastico di David Wheeler! Soprattutto dopo aver appena suonato la tastiera dopo aver provato a inserire un cd in una directory che JungleDisk ha chiamato "~ \ irina". Vuoi indovinare se il completamento della scheda ha funzionato? ...
RomanSt

1
Detox serve a rendere i file Windows compatibili con Unix, non viceversa.
Endolith,

3
@DennisWilliamson - Sembra che glindra (per Windows) non possa rinominare i caratteri con nomi di file non validi. G:\spc>rena.exe -safe -portable *.txtuscite[FATAL-ERROR] Filename syntax error: aa:a.txt
Steven

1
Nota il cambiamento nella sintassi quando vai su Linux, cioè rena '*.*' -portable, e se lo vuoi ricorsivo usa qualcosa come rena '***/*.*' -portablesu Linux. E credo che la ridenominazione dovrebbe essere fatta su Linux, non su Windows.
holroy,

4

Prova Recuva .

È l'unica utilità di Windows che ho trovato che gestisce nomi di file non compatibili con Windows.

Abilita la scansione per i file non eliminati (per il ripristino da dischi danneggiati o riformattati) e scansiona la tua cartella. Al ripristino, abilitare Ripristina struttura di cartelle . Recuva "copierà" effettivamente l'intera directory in un'altra posizione mentre "santitizza" i nomi di file ostili.


1

Senza essere su Linux e senza testare nulla, credo che si possano usare le battute come quelle qui sotto.

Per cambiare un personaggio:

find . -type f -exec rename 's/:/\[colon\]/g' {} +
find . -type f -exec rename 's/\*/\[asterisk\]/g' {} +

E infine per rimuovere tutti i caratteri non alfanumerici:

find . -type f -exec rename 's/[^A-Za-z0-9._]//g' {} +

Nota che questo deve essere esteso con tutti gli altri personaggi illegali di windows, ovvero<>:"/\|?*
holroy,

0

Se i tuoi file sono già su un volume NTFS, sembra che l'esecuzione di chkdisk da Windows "risolva" il problema. Sfortunatamente, sembra che lo faccia eliminando i file offensivi.


0

Sono riuscito con una combinazione delle prime due risposte, più pyRenamer (GUI). Sotto Linux, ho usato pyRenamer per comprimere gli spazi nei nomi delle cartelle (directory) - sostituendo lo spazio con nulla - in modo che gli altri programmi (rinominare Glindra) funzionino in modo ricorsivo (si potrebbero inserire caratteri di sottolineatura). Dai file, ho anche eliminato alcuni caratteri o parole accettabili di Windows per risparmiare spazio e allo stesso modo ho compresso spazi nei nomi dei file. Ho quindi eseguito rena per eliminare i caratteri non Windows, salvato su un'unità flash e quindi utilizzato Recuva per "ripristinare" una cartella in Windows. Recuva indica se il percorso di un file è troppo lungo (e rimuove anche i caratteri non Windows). Non ho ancora trovato uno strumento che controlla il percorso dei nomi dei file per vedere se sono sotto il limite massimo di Windows di 255 (o dire 240 per consentire un margine di manovra).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.