Introduzione

Lo spostamento di file e directory è una delle attività di base che spesso è necessario eseguire su un sistema Linux.

In questo tutorial, spiegheremo come utilizzare il comando mv per spostare file e directory.

Come usare il comando mv

Il comando mv (abbreviato da move) viene utilizzato per rinominare e spostare file e directory da una posizione a un'altra. La sintassi per il comando mv è la seguente:

mv [OPTIONS] SOURCE DESTINATION

Il parametro SOURCE può essere uno, o più file o directory, e DESTINATION può essere un singolo file o una directory.

  • Quando più file o directory sono indicati come un SOURCE, DESTINATION deve essere una directory. In questo caso, i file SOURCE vengono spostati nella directory di destinazione.
  • Se si specifica un singolo file come SOURCE e la DESTINATION è una directory esistente, il file viene spostato nella directory specificata.
  • Se specifichi un singolo file come SOURCE e un singolo file come DESTINATION, stai rinominando il file .
  • Quando SOURCE è una directory e DESTINATION non esiste, SOURCE verrà rinominata DESTINATION. Altrimenti, se DESTINATION esiste, può essere spostato all'interno della directory DESTINATION.

Per spostare un file o una directory, è necessario disporre delle autorizzazioni di scrittura su entrambi SOURCE e DESTINATION. Altrimenti, riceverai un errore di autorizzazione negata.

Ad esempio, per spostare il file file1 dalla directory di lavoro corrente alla directory /tmp, eseguire:

mv file1 /tmp

Per rinominare un file è necessario specificare il nome del file di destinazione:

mv file1 file2

La sintassi per lo spostamento delle directory è la stessa di quando si spostano i file. Nel seguente esempio, se la directory dir2 esiste, il comando si sposterà dir1 all'interno di dir2. Se dir2 non esiste, dir1 verrà rinominato in dir2:

mv dir1 dir2

Spostare più file e directory

Per spostare più file e directory, specificare i file che si desidera spostare come origine. Ad esempio, per spostare i file file1 e file2 nella directory dir1 digitare:

mv file1 file2 dir1

Il comando mv consente anche di utilizzare la corrispondenza dei tipi di file. Ad esempio, per spostare tutti i file pdf dalla directory corrente alla directory ~/Documents, utilizzare:

mv *.pdf ~/Documents

Opzioni di comando di mv

Il comando mv accetta diverse opzioni che influiscono sul comportamento predefinito del comando.

In alcune distribuzioni Linux, mv può essere un alias del comando mv con un set personalizzato di opzioni. Ad esempio, in CentOS mv è un alias di mv -i. Puoi scoprire se mv è un alias usando il comando type:

type mv

Se mv è alias, l'output sarà simile al seguente:

mv is aliased to `mv -i'

Se vengono fornite opzioni in conflitto, l'ultima ha la precedenza.

Chiedi prima di sovrascrivere

Per impostazione predefinita, se esiste il file di destinazione, verrà sovrascritto. Per richiedere la conferma, utilizzare l'opzione -i:

mv -i file1 /tmp
mv: overwrite '/tmp/file1'?

Per sovrascrivere il tipo di file digitare y o Y.

Forza la sovrascrittura

Se si tenta di sovrascrivere un file di sola lettura, il comando mv chiederà se si desidera sovrascrivere il file:

mv -i file1 /tmp
mv: replace '/tmp/file1', overriding mode 0400 (r--------)? 

Per evitare la richiesta di conferma, utilizzare le opzioni -f:

mv -f file1 /tmp

Questa opzione è particolarmente utile quando è necessario sovrascrivere più file di sola lettura.

Non sovrascrivere i file esistenti

L'opzione -n permette al comando mv di non sovrascrivere mai alcun file esistente:

mv -f file1 /tmp

Se file1 esiste, il comando sopra non farà nulla. Altrimenti sposterà il file nella directory/tmp.

Backup dei file

Se il file di destinazione esiste, è possibile crearne un backup utilizzando l'opzione -b:

mv -b file1 /tmp

Il file di backup avrà lo stesso nome del file originale con una tilde (~) aggiunta ad esso.

Utilizzare il comando ls per verificare che il backup sia stato creato:

ls /tmp/file1*
/tmp/file1  /tmp/file1~

Uscita dettagliata

Un'altra opzione che può essere utile è -v. Quando viene utilizzata questa opzione, il comando stampa il nome di ciascun file spostato:

mv -i file1 /tmp
renamed 'file1' -> '/tmp/file1'

Conclusione

Il comando mv viene utilizzato per spostare e rinominare file e directory.

Per maggiori informazioni sul comando mv eseguire questo comando da terminale:

man mv