Il comando mv viene utilizzato per spostare e/o rinominare i file nelle distribuzioni Linux e BSD. Gli amministratori di sistema usano regolarmente mv per eseguire operazioni sul filesystem Linux. Non preoccuparti se sei un utente iniziale con poca o nessuna conoscenza di questo comando. Oggi abbiamo preparato questa guida per fornirti tutte le informazioni di cui hai bisogno sull'utilità mv. Imparerai le varie funzioni associate a questo comando e acquisirai l'esperienza necessaria eseguendo i comandi di esempio illustrati di seguito. Fortunatamente per te, mv è uno dei comandi più basilari del terminale Linux e abbastanza facile da padroneggiare.
Esempio essenziale di comando Linux mv
Poiché mv offre solo una manciata di parametri della riga di comando, è molto semplice da imparare. Tuttavia, mv è anche molto robusto e, se usato in modo intelligente, può eseguire complesse operazioni sui file. Quindi dai un'occhiata ai comandi seguenti e scopri come possiamo usare mv nella nostra elaborazione quotidiana.
1. Sposta i file direttamente
Al suo semplice utilizzo, mv copia il file sorgente nella directory di destinazione e rimuove la sorgente dalla sua posizione precedente. A titolo illustrativo, abbiamo creato una semplice directory chiamata Test che contiene una directory denominata dir1 e un file di testo chiamato test . Puoi crearli facilmente usando i seguenti comandi.
$ mkdir Test && cd Test/ && mkdir dir1 && touch test $ tree $ mv test dir1/
Innanzitutto, abbiamo creato i file e le directory e quindi abbiamo utilizzato il comando tree per visualizzare la gerarchia del filesystem. Il comando finale è l'operazione che ci interessa. Sposta il file test nella dir1 directory. Quindi il primo argomento di mv è la sorgente e il secondo è la destinazione. Puoi riutilizzare l'albero per visualizzare la nuova gerarchia.
2. Rinomina file
La sintassi per spostare e rinominare i file è la stessa. Ma dobbiamo fornire il nuovo nome al posto della destinazione. In parole povere, quando usi mv su due file che risiedono sullo stesso filesystem Linux, risulterà in un'operazione di ridenominazione del file.
$ cd dir1 $ mv test TEST- -
Ora torna semplicemente alla directory principale ed emetti di nuovo il comando tree. Questo verificherà che non hai nessun file chiamato test in questo filesystem. Dovresti vedere il file che c'è un nuovo file chiamato TEST .
3. Impedisci la sovrascrittura dei file
Per impostazione predefinita, mv sovrascriverà tutti i file con lo stesso nome nella directory di destinazione. Puoi verificarlo utilizzando i comandi seguenti.
$ cp TEST dir1 $ mv TEST dir1/TEST $ tree
Tuttavia, possiamo facilmente impedire tale sovrascrittura utilizzando -n opzione, come mostrato nell'esempio seguente.
$ cp dir1/TEST . $ mv -n TEST dir1/TEST $ tree
Ora possiamo vedere che il nostro filesystem contiene entrambi i file. Il -n opzione ha anche una forma lunga chiamata –no-clobber . Provali entrambi se vuoi ricordarli per un po' di tempo.
4. Abilita la modalità interattiva durante la sovrascrittura dei file
È inoltre possibile impostare la modalità interattiva in mv, che si traduce in un messaggio che chiede se si desidera sovrascrivere o meno il file di destinazione. Sebbene sia utile per gli utenti principianti, è un gioco da ragazzi che questo interromperà i tuoi script di automazione.
$ mv -i TEST dir1/TEST mv: overwrite 'dir1/TEST'?
Digita semplicemente y o n nel prompt sopra per abilitare/disabilitare la sovrascrittura dei file. Puoi anche utilizzare l'alternativa in forma lunga –interattiva al posto di -i .
5. Crea backup prima di sovrascrivere i file
È sempre una buona idea creare backup prima di eseguire operazioni su file su larga scala. Gli utenti che iniziano a Linux spesso sovrascrivono i loro file involontariamente. Fortunatamente, mv ci consente di eseguire il backup dei nostri file di destinazione abbastanza facilmente. Dai una rapida occhiata all'illustrazione qui sotto per vedere come funziona.
$ mv --backup TEST dir1/TEST $ tree
L'output del comando tree mostra che il file di origine è stato spostato correttamente e c'è un file aggiuntivo chiamato TEST~ nella directory di destinazione. È il backup del file precedente. Usa sempre questa opzione quando non sei sicuro dell'esatta directory di destinazione o dei file associati.
6. Imposta suffisso personalizzato per i file di backup
Come abbiamo già visto, mv usa ~ simbolo come suffisso di backup predefinito. Tuttavia, possiamo cambiarlo con qualsiasi altra cosa usando -S opzione. L'esempio seguente lo dimostra utilizzando un nuovo suffisso di backup .BKP.
$ mv -S .BKP TEST dir1 $ mv --suffix=.BKP TEST dir1
Puoi anche utilizzare il –suffisso opzione al posto di -S se vuoi. L'impostazione di suffissi personalizzati per i nostri file di backup semplifica l'identificazione e una migliore comprensione del filesystem Linux.
7. Aggiorna file di destinazione
Il comando Linux mv ci consente di aggiornare i file di destinazione in base alla loro disponibilità e timestamp. In questo caso, l'operazione di spostamento avrà esito positivo solo se il file di origine è più recente del file di destinazione o se il file di destinazione è del tutto assente.
$ rm -ri * $ mkdir dir1 && touch test dir1/test
$ mv -u test dir1/
Innanzitutto, abbiamo eliminato tutti i contenuti di Test/ e poi li ha ricreati di nuovo. L'ho fatto, quindi entrambi i file di test vengono creati contemporaneamente e, quindi, sono gli stessi. Ora quando provo a spostare test in dir1 , la mossa non è riuscita ed è uscita silenziosamente. Ciò è accaduto poiché mv li ha trovati uguali e ha dedotto che non è richiesto alcun aggiornamento.
8. Configura il contesto di sicurezza di SELinux come predefinito
Il contesto di sicurezza di SELinux etichetta le risorse della CPU nei sistemi in cui è abilitato. Utilizza queste informazioni per identificare se una determinata risorsa è accessibile o meno da un utente specifico. Puoi facilmente impostare il contesto SELinux come predefinito usando -Z opzione, come illustrato di seguito.
$ touch new # create another file for testing $ mv -Z new dir1/ $ mv --context new dir1/ $ ls -Z dir1/
Qui, mv usa il contesto SELinux predefinito del tuo sistema quando sposta il nome del file new nella sua nuova destinazione. Puoi verificarlo usando l'ultimo comando mostrato sopra.
9. Abilita output dettagliato
Come molti comandi del terminale Linux tradizionali, anche il comando mv ci consente di visualizzare un output dettagliato delle sue operazioni. È particolarmente utile per i principianti o quando trasferisci molti file da un filesystem a un altro.
$ mv -v dir1/new . $ mv --verbose dir1/new . renamed 'dir1/new' -> './new'
I comandi precedenti sono equivalenti e trasferiscono il file dir1/new al nostro Test cartella. Tieni presente che il punto ". Il simbolo ' si riferisce alla directory attuale nei sistemi operativi simili a Unix. Questi comandi dovrebbero fornire una breve spiegazione dell'operazione di file sottostante.
10. Abilita Directory di destinazione
A volte, mv può avere difficoltà a mappare i file di origine alla directory di destinazione come intende l'utente. Può succedere se mv non riesce a dedurre se la destinazione è una directory di destinazione o un file. Fortunatamente, possiamo facilmente dire a mv se l'argomento di destinazione dovrebbe essere una directory o un file usando -t opzione di mv.
$ mv -t dir1/new/ new $ mv --target-directory=dir1/new/ new
Quando esegui il comando precedente, mv riposiziona il file chiamato nuovo dal Test nella directory Test/dir1/new directory. Si noti che stiamo passando la directory di destinazione prima dell'argomento di origine. È obbligatorio da -t individua la destinazione di destinazione.
11. Disattiva Directory di destinazione
L'utilità mv ci consente anche di disabilitare del tutto la destinazione di destinazione. Questo è utile quando vuoi assicurarti che i tuoi argomenti di destinazione siano trattati come normali file Linux. Come nell'esempio sopra, anche questo comando ha sia una forma breve che una lunga.
$ mv dir1/new/new . $ mv -T new dir1/new/ $ mv --no-target-directory new dir1/new/
Quindi, mv tratterà la destinazione come un file normale quando usiamo il -T o –no-target-directory opzione.
12. Abilita sovrascrittura forzata
Sebbene le moderne implementazioni del comando Linux mv non vengano richieste prima di sovrascrivere oggi, mv offre comunque un'utile opzione per abilitare la sovrascrittura forzata. Puoi utilizzare questa opzione per assicurarti che gli script della tua shell Linux siano compatibili con le versioni precedenti e non si interrompano su sistemi con un'implementazione mv diversa.
$ mv -f test dir1/test $ mv --force test dir1/test
Entrambi i comandi precedenti sono equivalenti ed eseguono l'operazione di spostamento senza chiedere conferma all'utente. Quindi i tuoi script di automazione non si interromperebbero a causa di mv.
13. Rimuovi le barre finali
Quando usi il completamento automatico nei terminali Linux, aggiunge anche una barra finale dopo ogni directory. Potrebbe porre problemi durante i movimenti dei file. Quindi gli sviluppatori di mv hanno anche creato una pratica opzione che rimuoverà queste barre finali per te.
$ mv --strip-trailing-slashes dir1/new/ .
Le –strip-trailing-slashs opzione dice a mv di rimuovere eventuali barre finali presenti negli argomenti SOURCE. Può essere molto utile in determinati scenari, quindi dovresti familiarizzare con questa opzione.
14. Sposta più file
Gli utenti Linux possono utilizzare mv per spostare facilmente un gran numero di file contemporaneamente. Il comando seguente mostra come spostare più di un file insieme usando mv.
$ touch aaa bbb ccc $ mv aaa bbb ccc dir1/
Possiamo anche spostare file e directory insieme. In questo caso, mv interpreta l'ultimo argomento come cartella di destinazione. Puoi anche utilizzare il -t opzione per specificare la destinazione di destinazione.
15. Sposta i file utilizzando i caratteri jolly
Il comando Linux mv non supporta le espressioni regolari. Tuttavia, puoi ancora utilizzare alcuni caratteri jolly per eseguire alcune corrispondenze di modelli di base. Dai una rapida occhiata all'esempio seguente per vedere come possiamo usare i caratteri jolly con mv.
$ touch aaa.mp3 bbb.mp3 ccc.mp3 $ mv *.mp3 dir1/ # moves all mp3 files
$ touch AAA BBB CCC $ mv [[:upper:]]* dir1 # moves all files that has uppercase names
$ mv *[[:lower:]] dir1 # moves all files that has lowercase names
Ci sono alcuni altri caratteri jolly supportati da mv. Sebbene non siano molto estesi, aiutano durante le operazioni di routine di elaborazione dei file.
16. Mostra la barra di avanzamento
Normalmente, il comando mv esegue le sue operazioni entro un lasso di tempo ragionevole. Tuttavia, può richiedere relativamente più tempo quando si spostano documenti di grandi dimensioni. Gli utenti potrebbero anche pensare che il sistema si sia bloccato se impiega troppo tempo. Possiamo evitare questo problema costringendo mv a visualizzare una barra di avanzamento che tiene informato l'utente.
$ mv dir1/*.mp3 . & progress -mp $!
Questo comando sposterà tutti i file mp3 da dir1/ al Test directory e mostrerà un pratico indicatore di avanzamento. Stiamo usando il pacchetto Linux 'progress ' per questo. Puoi installarlo usando il comando seguente.
$ sudo apt install progress
17. Sposta i file utilizzando l'espansione di parentesi
La shell dei comandi di Linux consente agli utenti di generare combinazioni letterali utilizzando un metodo chiamato espansione parentesi graffe. Sebbene molte persone tendano a complicare questo, in pratica è piuttosto semplice. Dai un'occhiata da vicino ai seguenti esempi per scoprire come funziona l'espansione del brace in Linux e altri sistemi simili a Unix.
$ rm new && touch new.txt new.pdf new.html $ mv new.{pdf,txt,html} dir1/new/ # brace expansion
Quindi qualsiasi file chiamato new con estensione .pdf/.txt/.html verrà spostato nella directory di destinazione. Dal momento che stiamo generando i valori letterali del nome file dalla nostra parentesi, chiamiamo questa operazione espansione parentesi graffa.
18. Sposta i file in base alle dimensioni
L'elaborazione dei file comporta molte operazioni di spostamento e i file di grandi dimensioni tendono a richiedere una notevole quantità di tempo della CPU. Pertanto, molti amministratori eseguono il backup dei propri documenti in base alle loro dimensioni. Mostriamo ai lettori come spostare i file in base alle loro dimensioni usando i comandi mv e trova.
$ find . -type f -size +1G -exec mv "{}" large_files/ \;
Il comando precedente sposterà tutti i file di dimensioni superiori a 1 GB dalla directory di lavoro corrente a file_grandi . Puoi semplicemente modificare il valore del parametro size per personalizzare la tua operazione di spostamento.
19. Sposta i file in base alla data di modifica
La data di modifica è un altro criterio comune utilizzato durante il backup dei dati di sistema. Puoi trovare tutti i file più vecchi di un determinato periodo di tempo usando il comando seguente.
$ find . -mtime +90 -exec mv "{}" old_files/ \;
Questo comando sposterà tutti i file che hanno più di 3 mesi (90 giorni) in una nuova directory chiamata old_files . La cosa notevole qui è che l'argomento fornito è in giorni.
20. Rinomina più file
Per impostazione predefinita, l'utilità mv non può rinominare più file contemporaneamente. Tuttavia, possiamo ancora utilizzare altri strumenti come find insieme a mv per operazioni sui file così avanzate. Il comando seguente rinominerà tutti i file .php in file .html.
$ touch {test1,test2,test3}.php $ find . -depth -name "*.php" -exec sh -c 'f="{}"; mv -- "$f" "${f%.php}.html"' \;
Questo comando rinominerà ogni file .php in file .html usando mv e l'opzione exec del comando trova Linux.
21. Individua le informazioni binarie del comando Linux mv
Possiamo scoprire dove si trova il comando mv usando il comando "che" di Linux. Stampa il nome dei percorsi o dei collegamenti che gestiscono un comando specifico, come mv.
$ which mv /usr/bin/mv
Puoi anche utilizzare il comando "whereis" in Linux per visualizzare informazioni aggiuntive come la posizione del binario mv e tutti i file manuali associati, come mostrato di seguito.
$ whereis mv mv: /usr/bin/mv /usr/share/man/man1/mv.1.gz
22. Visualizza le informazioni sulla versione
Le informazioni sulla versione dei comandi del terminale Linux ci consentono di trovare la versione specifica di un pacchetto. Possiamo facilmente visualizzare queste informazioni sulla versione per mv, come dimostrato nell'esempio seguente.
$ mv --version
Stamperà le informazioni sulla versione per il pacchetto mv installato nel tuo sistema insieme ad altre informazioni. Queste informazioni includono il nome di eventuali dipendenze e persone che hanno creato mv.
23. Visualizza la pagina della guida
La pagina della guida contiene informazioni riepilogative di tutte le opzioni disponibili per l'utilità mv. È un modo pratico per ricordare le opzioni usate poco.
$ mv --help
Poiché mv supporta solo pochi argomenti della riga di comando, è relativamente più facile memorizzarli. Fortunatamente, puoi sempre consultare la pagina di aiuto per informazioni rapide su qualsiasi opzione particolare.
24. Visualizza la pagina man
Contrariamente alle informazioni riassunte fornite dalla guida, la pagina man offre informazioni molto più dettagliate. Fare riferimento al comando seguente ogni volta che si desidera comprendere un'opzione o un utilizzo specifico in modo più dettagliato.
$ man mv
Dovrebbe visualizzare una guida dettagliata che spiega tutte le diverse opzioni disponibili per mv. Dovresti sempre passare attraverso la pagina man prima di provare qualsiasi comando che modifichi il filesystem.
25. Seleziona Alias
Molte distribuzioni Linux utilizzano alias preconfigurati per applicare le opzioni standard della riga di comando per i pacchetti. Puoi facilmente verificare se mv è un alias di qualcosa usando il comando seguente.
$ alias | grep -iw mv
$ type mv
Tuttavia, l'ultimo comando non funzionerà se il tuo sistema Linux ha eseguito l'hashing del comando mv.
Pensieri finali
Il comando Linux mv ci consente di eseguire molte operazioni sui file come spostare i file, rinominarli, creare backup e così via. Sebbene consenta solo un numero limitato di opzioni, possiamo combinare mv con molti comandi del terminale Linux come il comando find e creare combinazioni di comandi più complesse. Abbiamo delineato i 25 migliori esempi di mv nell'informatica quotidiana. Alcuni di essi sono puramente basilari, mentre altri possono essere utili quando si risolvono problemi più dinamici. Speriamo di aver fornito le informazioni essenziali che stavi cercando. Pubblica i tuoi pensieri nella sezione commenti e facci sapere se hai domande.