back to top

Copiare e/o spostare file e directory: cp e mv – Guida Linux

Proseguiamo in questa lezione il nostro viaggio nel file system analizzando altri due utili comandi della shell di Linux, ovvero cp (copy) e mv (move) che ci serviranno rispettivamente per copiare, spostare e rinominare file e/o directory all’interno del nostro sistema operativo.

Il comando cp

Copiare file

Per copiare un file useremo il comando cp (che è l’abbreviazione di copy), ecco la sintassi:

cp [opzioni] sorgente destinazione

Poniamo, ad esempio, di voler creare una copia del file "foto-1.jpg" (che si trova nella posizione corrente):

cp foto-1.jpg copia-foto-1.jpg

Così facendo avrò creato una copia del file sorgente nella stessa cartella in cui mi trovo (per verificare si faccia ls -l).

Volendo creare una copia in un’altra cartella dovremo indicare alla voce destinazione il percorso completo della cartella al cui interno vogliamo venga copiato il file:

cp foto-1.jpg /home/miosito/fotografie

Così facendo la copia avrà lo stesso nome del file sorgente.

Attraverso il comando cp è possibile anche copiare più file simultaneamente: per farlo sarà sufficiente elencarli seoarandoli con uno spzio. Vediamo un esempio:

cp foto-1.jpg foto-2.jpg foto-3.jpg /home/miosito/fotografie

Volendo è anche possibile effettuare la copia di più file simultaneamente utilizzando un pattern attraverso il carattere jolly (l’asterisco), in questo modo:

cp foto*.jpg /home/miosito/fotografie

Così facendo avrò copiato tutti i file JPEG che hanno il nome che inizia per "foto".

Copiare intere directory

Ma se volessimo copiare un intera directory? Per fortuna il comando cp ci consente di farlo in modo altrettanto semplice. Per effettuare la copia di una cartella useremo, come per il comando rm, l’opzione ricorsiva che è supportata, appunto, anche dal comando cp.

Poniamo, ad esempio, di voler copiare l’intera directory "foto_vacanze_2020" (che si trova nella posizione corrente) all’interno della solita cartella fotografie del nostro sito:

cp -R foto_vacanze_2020 /home/miosito/fotografie

oppure:

cp -a foto_vacanze_2020 /home/miosito/fotografie

Una volta eseguito questo comando vi invito ad effettuare una verifica: spostatevi nella directory di destinazione (usando cd) e visualizzatene il contenuto (usando ls)… se tutto ha funzionato correttamente dovreste trovare la vostra directory "foto_vacanze_2020" con all’interno tutti i file presenti nella cartella sorgente.

Le opzioni del comando cp

Vediamo di seguito le opzioni ammesse dal comando cp:

  • -a -effettua la copia di una cartella e di tutto il suo contenuto compreso link simbolici e permessi
  • -f -effettua la copia in modalità forzosa rimuovendo il file di destinazione se è presente e non può essere sovrascritto
  • -i -durante la copia il sistema chiederà conferma prima di sovrascrivere i file eventualmente presenti (modalità interattiva)
  • -l -linka i file invece di copiarli
  • -L -segue i link simbolici
  • -R -copia ricorsiva (utilizzata per effettuare la copia di cartelle di file)
  • -n -effettua la copia ma non sovrascrive i file eventualmente già presenti
  • -u – effettua la copia solo se il file di origine è più recente di quello di destinazione
  • -v -stampa a video una serie di informazioni aggiuntive sul processo di copia (modalità verbosa)

Il comando mv

Spostare file

Qualora non fossimo interessati a copiare, ma semplicemente a spostare un file useremo il comando mv (che è l’abbreviazione di move) seguito dal nome del file da spostare e, a seguire, dalla directory di destinazione. Ecco la sintassi:

mv [opzioni] sorgente destinazione

Riprendiamo l’esempio visto sopra e poniamo di voler spostare (e non copiare) il file "foto-1.jpg" all’interno della solita directory fotografie:

mv foto-1.jpg /home/miosito/fotografie

Così facendo il file "sparirà" dalla posizione corrente e "comparirà" nella directory di destinazione.

Come abbiamo visto per cp anche per mv è possibile effettuare lo spostamento simultaneamente su più file elencandone i nomi sepoarati da uno spazio:

mv foto-1.jpg foto-2.jpg foto-3.jpg /home/miosito/fotografie

oppure ricorrendo al carattere jolly, in questo modo:

mv foto*.jpg /home/miosito/fotografie

Così facendo sposteremo tutti i file JPEG che hanno il nome che inizia con "foto" dentro alla cartella di destinazione.

Spostare una cartella

Il comando mv consente di spostare anche intere cartelle, vediamo un esempio:

mv foto_vacanze_2020 /home/miosito/fotografie

Attraverso questo comando spostiamo la cartella "foto_vacanze_2020" ed il suo contenuto all’interno del percorso specificato.

Attenzione: per spostare un file o una directory è necessario disporre dei permessi di scrittura sia sulla sorgente che sulla destinazione, in caso contrario l’operazione non potrà essere eseguita e si otterrà un errore.

Rinominare file e cartelle

In questa sede credo sia opportuno ricordare che il comando mv ha anche una seconda funzione: quella di rinominare un file o una cartella. Ecco la sintassi:

mv vecchio_nome nuovo_nome

Se, ad esempio, volessimo rinominare il file "foto-1.jpg" in "foto_amici_spiaggia.jpg" useremo:

mv foto-1.jpg foto_amici_spiaggia.jpg

Per rinominare una cartella, analogamente, useremo:

mv foto_vacanze_2020 foto_vacanze_mare_2020

Si faccia attenzione: per rinominare la cartella è necessario che il nuovo nome non corrisponda al percorso di una cartella che esiste già: in quest’ultima circostanza, infatti, la cartella sorgente verrà spostata all’interno di quella di destinazione.

Le opzioni del comando mv

Vediamo di seguito le opzioni ammesse dal comando mv:

  • -f -effettua lo spostamento in modalità forzosa rimuovendo il file di destinazione se è presente
  • -i -durante lo spostamento il sistema chiederà conferma prima di sovrascrivere i file eventualmente presenti nel percorso di destinazione (modalità interattiva)
  • -n -effettua lo spostamento ma non sovrascrive i file eventualmente già presenti nel percorso di destinazione
  • -v -stampa a video una serie di informazioni aggiuntive sul processo di spostamento (modalità verbosa)
  • -u – effettua lo spostamento solo se il file di origine è più recente di quello co lo stesso nome eventualmente già presente nel percorso di destinazione
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).