Vuoi imparare tutti i trucchi per usare il comando mv? Se non hai mai usato questo comando su Linux, con questa guida scoprirai il suo utilizzo di base e alcune operazioni più avanzate che puoi fare sfruttando le opzioni del comando.
Innanzitutto devi sapere che il comando move (mv) di Linux serve a spostare e rinominare cartelle e file. Si tratta quindi di un comando fondamentale da conoscere per lavorare con i file sia in locale che attraverso il terminale del tuo hosting WordPress.
Vediamo subito come funziona.
Table of Contents
Sintassi del comando mv
Ogni comando su Linux segue una sintassi precisa, conoscerla ci permette di capire come usare al meglio il terminale.
Il comando mv
sta per “move” ed è quello che ci permette di spostare e rinominare file e cartelle da terminale.
La sintassi di base del comando mv per spostare un file in una specifica cartella è questa:
mv [opzioni] file-di-orgine cartella-di-destinazione
Bisogna quindi specificare prima il nome del file e dopo la posizione in cui vogliamo spostarlo.
Oltre al semplice spostamento di un file, il comando mv su Linux ha anche altri utilizzi che ti mostrerò in questa guida facendo degli esempi pratici.
Casi d’uso basilari per imparare a usare il comando mv
I comandi su Linux possono essere sfruttati in diversi modi, per riuscire a imparare a usare bene un nuovo comando, conviene sempre partire dagli esempi più semplici.
Se vogliamo lavorare con i file da terminale, è fondamentale sapere come spostarli e rinominarli.
Con il comando mv possiamo:
- rinominare un file o una cartella;
- spostare un file o una cartella;
- spostare più file o più cartelle dando un solo comando.
Iniziamo da questi esempi di base e poi passiamo alle opzioni del comando mv che ci permettono di fare operazioni più avanzate.
Come rinominare un file
Possiamo usare il comando mv per rinominare un file. Con questo comando stiamo semplicemente rinominando il file, senza spostarlo.
Il comando si usa così:
mv nome-file nuovo-nome-file
Nel nostro esempio ho usato il comando seguente per rinominare il file “ricerca.txt” in “ricerca-supporthost.txt”.
mv ricerca.txt ricerca-supporthost.txt
Nota che nell’esempio ho usato il comando ls per mostrare il contenuto della cartella corrente e mostrare così che il file è stato rinominato. Se ancora non hai familiarità con i comandi che vedi, puoi consultare la nostra lista dei comandi Linux più usati.
Qui bisogna aprire una piccola parentesi: usando il comando mv senza usare le opzioni, il terminale non ci chiederà conferma in caso di sovrascritture.
Questo cosa significa?
Se nel mio caso nella cartella ci fosse già stato un altro file chiamato “ricerca-supporthost.txt”, cambiando nome, avrei sovrascritto questo file. Per ora tieni a mente questo, dopo, nella sezione sulle opzioni, ti spiegherò come fare a evitare la sovrascrittura e a richiedere conferma.
Come rinominare una cartella
Possiamo usare mv come comando per rinominare le cartelle. La procedura è molto simile a quella che abbiamo visto per i file.
mv nome-cartella nuovo-nome-cartella
Nel mio esempio voglio rinominare la cartella “Guide” in “Articoli” e per farlo do questo comando:
mv Guide Articoli
Tieni presente che devi specificare il nome di una cartella non esistente nello stesso percorso, altrimenti invece di rinominare la cartella la sposterai in quella di destinazione.
Come spostare un file
Il comando move si usa principalmente per spostare i file da una posizione all’altra.
La sintassi è questa:
mv nome-file percorso/cartella-di-destinazione
Valgono sempre le regole della sovrascrittura, quindi prima di procedere controlla che non ci sia un file con lo stesso nome nella cartella di destinazione. In alternativa, prima di procedere leggi i prossimi paragrafi per capire come evitare la sovrascrittura.
In questo esempio voglio spostare il file “appunti.txt” nella cartella “backup” che si trova in “Downloads”.
Per farlo uso quindi il comando:
mv appunti.txt /home/kubuntu/Downloads/backup/
Nell’esempio ho usato il comando qui sopra per spostare il file, come vedi per farlo ho specificato il percorso completo della cartella di destinazione (“backup”).
Poi ho cambiato cartella con il comando cd
e con il comando ls
ho ottenuto la lista dei file nella cartella “backup” per verificare che il file appunti.txt fosse stato spostato correttamente.
Come spostare una cartella
Se vuoi spostare una cartella da una posizione ad un’altra puoi usare il comando mv in questo modo:
mv nome-cartella /percorso/cartella-di-destinazione/
In questo esempio voglio spostare la cartella “Articoli” nella cartella backup, per farlo devo specificare il percorso completo di destinazione:
mv Articoli /home/kubuntu/Downloads/backup/
Ecco il risultato, ora la cartella è stata spostata da “Documents/SupportHost/” a “Downloads/backup/”.
Nota che in questo caso (per comodità) mi trovo già nel percorso della cartella che voglio spostare, per questo digito solo il percorso completo della cartella di destinazione. Se, invece, esegui i comandi da una cartella diversa, devi specificare sia il percorso completo della cartella di origine che quello della cartella di destinazione.
Come spostare più file
Ora che sappiamo fare le operazioni basilari, possiamo estendere l’uso del comando mv per risparmiare tempo.
Se vogliamo trasferire più file presenti nella stessa cartella di origine, non è necessario usare il comando mv ogni volta per un singolo file. Possiamo raggruppare lo spostamento in un unico comando così:
mv file-1 file-2 file-3 percorso/cartella-di-destinazione/
Nel nostro caso voglio spostare due file nella cartella backup, per farlo indico il nome dei due file seguito dal percorso della cartella di destinazione, così:
mv ricerca1.txt ricerca2.txt /home/kubuntu/Downloads/backup/
Per gli spostamenti dei file, valgono le stesse regole che abbiamo visto parlando del comando cp usato in combinazione con il carattere *. Vediamo un esempio più avanzato.
Spostare più file usando il wildcard
Se voglio spostare tutti i file che iniziano per una determinata stringa, posso usare il wildcard (*).
Nell’esempio voglio spostare in una cartella vuota, solo i file che iniziano per “ricerca” e hanno come estensione “txt”, uso quindi il comando:
mv ricerca*.txt /home/kubuntu/Downloads/backup/
Il risultato sarà questo:
Nella cartella di destinazione avrò spostato solo i file che iniziano con quella stringa, infatti, i file “documento” e “paragrafo” non sono stati spostati.
Spostare più cartelle con un solo comando
Allo stesso modo dei file, possiamo anche spostare più cartelle in una cartella di destinazione, in questo modo:
mv cartella1 cartella2 cartella3 /percorso/cartella-di-destinazione
Nota che in questo caso sposterai le cartelle e tutto il loro contenuto nella cartella di destinazione.
In questo esempio ho tre cartella nella cartella “Ricerche”:
- 2020
- 2021
- 2022
Voglio spostarle nella cartella backup e quindi uso questo comando:
mv 2020 2021 2022 /home/kubuntu/Downloads/backup/
Il risultato sarà che all’interno della cartella “backup” avrò le tre cartelle (ognuna spostata con tutto il contenuto di partenza).
Come usare le opzioni del comando mv su Linux
Adesso che abbiamo chiarito i principali utilizzi del comando move, possiamo vedere quali sono le opzioni più utili.
La vera forza dei comandi Linux, infatti, è quella di utilizzarli in combinazione con le opzioni.
Come rinominare o spostare i file richiedendo conferma di sovrascrittura
È capitato a tutti di sovrascrivere i dati per sbaglio, soprattutto a chi – come me – è abituato a usare Windows che chiede conferma prima di queste operazioni.
Per evitare errori su Linux, ci viene incontro l’opzione -i
.
Usando questa opzione, il terminale ci chiederà conferma ogni volta che un file o una cartella stanno per essere sovrascritte.
Ecco un esempio:
mv -i ricerca.txt /home/kubuntu/Downloads/backup
Dando questo comando, compare il prompt seguente:
mv: overwrite '/home/kubuntu/Downloads/backup/ricerca.txt'?
In risposta a questo prompt possiamo:
- confermare digitando y e dando Invio;
- annullare digitando n e dando Invio.
In questo esempio nel primo spostamento del file “ricerca.txt” ho confermato, mentre nello spostamento del file “ricerca-1.txt” ho annullato l’operazione.
Come rinominare o spostare i file evitando di sovrascrivere
Se dobbiamo spostare molti file e vogliamo evitare la sovrascrittura, possiamo usare l’opzione -n
.
L’opzione -n a differenza di -i non ci chiederà conferma, ma salterà automaticamente tutti i file con lo stesso nome evitando di sovrascriverli.
Ecco un esempio:
mv -n *.txt /home/kubuntu/Downloads/backup/
Con questo comando ho spostato tutti i file con estensione txt, evitando di spostare i file già esistenti.
Infatti nella cartella backup sono stati correttamente spostati “ricerca.txt” e “paragrafo2.txt”, mentre i file elencati che già esistevano non sono stati rimpiazzati proprio grazie all’opzione n.
Come creare un backup dei file prima di sovrascriverli
Usando il comando mv possiamo evitare di rimpiazzare i file sovrascrivendoli, anche con l’opzione -b
.
Le opzioni che abbiamo appena visto ci permettono di confermare le sovrascritture (i) o di saltarle (n).
L’opzione b, invece, procede con la sovrascrittura, ma prima di farlo crea una copia del file che verrà sovrascritto. Alla fine potremo distinguere il file di backup creato dal modo in cui viene rinominato: il suo nome terminerà con il simbolo ~.
Vediamo un esempio che ci permette di capire bene come funziona.
Eseguo lo spostamento di un file in una cartella in cui esiste già un file con lo stesso nome:
mv -b ricerca-supporthost.txt /home/kubuntu/Downloads/backup/
Avendo usato l’opzione b, il file viene spostato, ma viene anche creata una copia del file “ricerca-supporthost.txt” che era già presente nella cartella di destinazione.
Infatti adesso nella cartella backup vedo due file:
- ricerca-supporthost.txt
- ricerca-supporthost.txt~
Il file che termina con il simbolo ~ è il file originale, quello che potremo definire come la nostra copia di backup. Mentre l’altro è quello che abbiamo spostato.
L’opzione b ci permette anche di creare backup multipli per recuperare quindi molteplici versioni dello stesso file, per farlo dobbiamo specificare l’opzione --backup=numbered
Nel mio esempio ho usato il comando:
mv --backup=numbered ricerca.txt /home/kubuntu/Downloads/backup/
In questo caso, essendoci già una versione di backup del file, ne è stata creata un’altra. I backup si riconoscono dal file spostato, perché hanno questo formato in cui è specificato il numero della versione:
- ricerca.txt.~1~
- ricerca.txt.~2~
Come usare l’opzione update con il comando mv
Il comando move supporta anche l’opzione -u
(update) che ci permette di effettuare lo spostamento dei file in particolari condizioni:
- se il file di destinazione è più vecchio di quello di origine, allora lo spostamento avviene;
- se il file non esiste nella cartella di destinazione, viene spostato.
In tutti gli altri casi, lo spostamento non avviene.
Immaginiamo di avere una cartella in cui voler spostare solo i file aggiornati. In questo caso possiamo usare l’opzione -u in modo che solo i file effettivamente modificati vengano spostati.
Uso questo comando per spostare il file:
mv -u ricerca.txt /home/kubuntu/Downloads/backup/
In questo esempio, il file di origine era aggiornato rispetto a quello di destinazione e quindi lo spostamento è avvenuto.
In questo altro caso, invece, possiamo vedere che il file “ricerca.txt” non è stato spostato né sovrascritto visto che i file (nella cartella di origine e destinazione) avevano la stessa data di modifica.
Come forzare la sovrascrittura con l’opzione f
Ci sono casi in cui vogliamo forzare lo spostamento o la sovrascrittura dei file, ma stiamo agendo su file che hanno permessi di scrittura limitati.
Per esempio potremmo avere un file impostato in sola lettura.
In questi casi possiamo usare l’opzione -f
(force) per forzare la sovrascrittura di uno o più file in sola lettura senza dover confermare singolarmente ogni volta.
In questo esempio sto spostando un file che richiede la sovrascrittura e il file di destinazione è in sola lettura, per questo ci viene chiesto se vogliamo modificare i permessi e dobbiamo confermare digitando “y”.
Se vogliamo evitare questi avvisi, dobbiamo usare l’opzione -f come ho fatto con il secondo comando, in questo modo:
mv -f ricerca.txt /home/kubuntu/Downloads/backup/
Così facendo, non ci viene richiesta la conferma e lo spostamento procede.
Questo è solo un esempio semplice per mostrarti come funziona, ma ovviamente la vera utilità dell’opzione force sta negli spostamenti multipli dei file che altrimenti comporterebbero ripetuti prompt di conferma.
Conclusioni
Il comando mv fa parte degli elementi fondamentali da conoscere per chi lavora in ambiente Linux.
Grazie ad esso possiamo spostare e rinominare i file, ma dobbiamo fare attenzione quando ci sono dati che possono essere andare persi durante queste modifiche. Per fortuna le opzioni del comando mv ci permettono di scegliere come gestire la sovrascritture e ci evitano di fare danni.
Avevi mai provato a usare il comando mv? Hai ancora dubbi su come usarlo? Facci sapere con un commento.
Lascia un commento