Mentre lavori con Linux, potresti imbatterti in alcune utilità e app che funzionano solo con nomi di file che non includono spazi. Non sempre salviamo i file in questo formato "senza spazio" e potrebbe essere necessario cercare una soluzione alternativa che sostituisca gli spazi nei nomi dei file con i caratteri di sottolineatura '_'. In questo modo i nomi dei tuoi file non conterranno spazi e potrai utilizzarli facilmente in tutte le applicazioni.
In questo articolo, ti spiegheremo due modi per convertire tutti gli spazi nei nomi dei file in caratteri di sottolineatura, molto semplicemente tramite la riga di comando.
Abbiamo eseguito i comandi e le procedure menzionati in questo articolo su un sistema Ubuntu 18.04 LTS.
La mia cartella Download, che userò come esempio per questo articolo, contiene spazi in tutti i nomi di file.
$ ls Downloads
Userò questa cartella per spiegare come convertire i nomi dei file in un nuovo formato.
Metodo 1:tramite un unico comando mv
In questo metodo, utilizzeremo il comando Ubuntu mv in un ciclo for per rinominare tutti i file/cartelle in una determinata directory in modo che tutti gli spazi nei loro nomi vengano sostituiti con caratteri di sottolineatura.
Apri la riga di comando di Ubuntu, il Terminale, tramite la ricerca in Avvio applicazioni o la scorciatoia Ctrl+Alt+T.
Ecco la sintassi del comando che utilizzerai:
$ for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done
Ho eseguito lo stesso comando per sostituire gli spazi con i trattini bassi nella mia cartella Download:
Quando ho elencato di nuovo il contenuto della directory, puoi vedere che tutti i nomi di file ora contengono caratteri di sottolineatura anziché spazi.
Metodo 2:utilizzo di uno script per rinominare i file
In questo metodo, utilizzeremo uno script bash che utilizza il comando mv per rinominare i nomi di file e cartelle in modo che tutti gli spazi vengano sostituiti con caratteri di sottolineatura.
Apri l'applicazione Terminale e spostati nella cartella bin come segue:
$ cd ~bin
Ora apri un nuovo file di script in uno dei tuoi editor di testo preferiti. Useremo l'editor nano per aprire un file di script vuoto con il nome di replace_spaces.sh
$ sudo nano replace_spaces.sh
In quel file vuoto, aggiungi il seguente script:
#!/bin/bash for f in * do new="${f// /_}" if [ "$new" != "$f" ] then if [ -e "$new" ] then echo not renaming \""$f"\" because \""$new"\" already exists else echo moving "$f" to "$new" mv "$f" "$new" fi fi done
Suggerimento: Invece di digitare l'intero script nel tuo file bash, puoi copiarlo da qui e incollarlo nel Terminale usando Ctrl+Maiusc+V o usando l'opzione Incolla dal menu di scelta rapida.
Ecco come apparirà il tuo file:
Ora, esci dal file tramite la scorciatoia Ctrl+X e salva il file su "Salva buffer modificato?" prompt digitando Y e quindi premendo Invio.
Per rendere questo file uno script eseguibile, esegui il seguente comando nel tuo Terminale:
$ sudo chmod +x replace_spaces.sh
Ora sei pronto per utilizzare lo script in qualsiasi cartella.
Quando eseguo lo script nella mia cartella Download di esempio, vedo tutti gli spazi nei nomi dei miei file convertiti in caratteri di sottolineatura come segue:
Quindi, questi erano i due modi attraverso i quali è possibile rinominare i file in modo che tutti gli spazi nei loro nomi vengano convertiti in caratteri di sottolineatura. Ora qualsiasi applicazione che stai utilizzando non mancherà di riconoscere i nomi di file che contengono spazi.