Il comando Linux mv viene utilizzato per spostare file e directory da una posizione all'altra. Oltre a spostare i file, può anche rinominare un file o una directory.
1. Rinomina un file
Durante la ridenominazione di un file utilizzando il comando mv, mantiene lo stesso numero di inode anche dopo averlo spostato con un nome diverso. Se sposti il file in un filesystem diverso, il numero di inode sarà diverso.
$ cd /tmp $ ls -i sample.txt 136407 sample.txt $ mv sample.txt sample1.txt $ ls -i sample1.txt 136407 sample1.txt
Nota: ls -i mostra il numero di inode di un file, come abbiamo discusso in precedenza nei nostri esempi di comandi ls.
2. Rinomina una directory
Proprio come rinominare un file, puoi rinominare una directory usando il comando mv come mostrato di seguito. Ciò mantiene lo stesso numero di inode della directory anche dopo la ridenominazione.
Se esegui semplicemente ls -l dir, visualizzerà i file nella directory. Per visualizzare le proprietà della directory, utilizzare l'opzione -d. -i opzione mostra il numero di inode della directory.
$ ls -ldi dir1 271365 drwxr-xr-x 2 bala bala 4096 2010-10-30 20:25 dir1 $ mv dir1 dir2 $ ls -ldi dir2 271365 drwxr-xr-x 2 bala bala 4096 2010-10-30 20:25 dir2
3. Richiedi una conferma prima di sovrascrivere
Per impostazione predefinita, il comando mv non chiederà alcuna conferma se il file di destinazione esiste, lo sovrascrive semplicemente. Per evitare ciò potresti voler ottenere una conferma dal comando di spostamento prima di sovrascrivere il file di destinazione utilizzando l'opzione -i come mostrato di seguito. Puoi digitare "y" o "n" per accettare o rifiutare l'operazione di spostamento.
$ mv -i sample.txt sample1.txt mv: overwrite `sample1.txt'?
Quando il permesso del file di destinazione è diverso dal file di origine, il comando mv -i visualizzerà la seguente conferma.
$ mv -i sample.txt sample1.txt mv: try to overwrite `sample1.txt', overriding mode 0644 (rw-r--r--)? y
4. Sposta più file in una directory specifica
Puoi spostare più file usando il comando mv. L'esempio seguente sposta il contenuto della directory corrente in una directory diversa.
$ cd chap1 $ ls -F ex1.c ex2.c ex3.c example/ exercise/ $ mv * chap2/
5. Eseguire un backup della destinazione prima di sovrascrivere
Usando l'opzione mv –suffix, puoi eseguire il backup del file di destinazione prima di sovrascriverlo. Il file di destinazione originale verrà spostato con l'estensione specificata nell'opzione -S o –suffix.
$ ls file1 file2 $ mv --suffix=.bak file1 file2 $ ls file2 file2.bak
Nota: Potresti voler creare un alias per 'mv –suffix', che eseguirà automaticamente un backup ogni volta che usi il comando mv e se il file di destinazione esiste.
6. Sposta solo i file che non esistono nella directory di destinazione
Quando esegui mv *, sposterà tutti i file nella directory di destinazione. Tuttavia, se desideri spostare dalla directory di origine solo i file che non esistono nella directory di destinazione, utilizza l'opzione mv -u come mostrato di seguito.
Il comando seguente sposterà solo ex2 ed ex2 da chap1 a chap2, come file ex1 già esistente in cap2, che non verrà spostato.
$ ls chap1 ex1 ex2 ex3 $ ls chap2 ex1 $ mv -u chap1/* chap2/ $ ls chap1 ex1 $ ls chap2 ex1 ex2 ex3