GNU/Linux >> Linux Esercitazione >  >> Linux

25 Pratico comando mv in Linux per utenti quotidiani

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.


Linux
  1. 12 Esempi di comandi IP per utenti Linux

  2. 20 Esempi di comandi Sed (Stream Editor) per utenti Linux

  3. Tutorial sui comandi per utenti Linux per principianti (con esempi)

  4. 8 esempi pratici del comando Xargs di Linux per principianti

  5. A cosa serve il test di Linux:un test di comando?

50 Comando grep produttivo e pratico per gli appassionati di Linux

15 modi per utilizzare il comando Linux Watch per le attività quotidiane

15 esempi pratici di comando Rsync in Linux

5 esempi pratici di Tail Command in Linux

Una guida pratica per il comando chroot in Linux

UNIX / Linux:7 esempi pratici di comandi PS per il monitoraggio dei processi