El comando mv en Linux : ejemplos de uso
Table of Contents
- I. Introducción
- II. Uso del comando mv
- B. Mover una carpeta a otra carpeta
- C. Mover varios archivos a una carpeta
- D. Mover varias carpetas a una sola carpeta
- E. Mover todo el contenido de una carpeta
- F. Mover un archivo si la fuente es más reciente
- G. Mover todos los archivos de una carpeta excepto un archivo específico
- H. Cambiar el nombre de un archivo o carpeta
- I. Solicitar confirmación con el comando mv
- J. Comando mv: no sobrescribir archivos existentes
- III. Conclusión
I. Introducción
En Linux, el comando "mv", que significa "move", se utiliza para mover elementos (archivos y carpetas) de un origen a un destino. Este comando también se utiliza para renombrar un elemento. Para hacer una copia de un archivo o carpeta, utiliza el comando "cp".
Es un comando muy útil, e incluso me atrevería a decir que es uno de los comandos imprescindibles en Linux. Es un comando nativo en todas las distribuciones, ya sea Debian, Ubuntu, Rocky Linux, etc.... Por eso he decidido presentártelo en este artículo, utilizando varios ejemplos. Por mi parte, estoy trabajando en una máquina Debian.
II. Uso del comando mv
A. Mover un archivo a otra carpeta
Dado que el comando mv se utiliza para mover elementos, empecemos moviendo un archivo a otra carpeta. En otras palabras, es como cortar y pegar. Empezaremos creando un archivo llamado"it-connect.txt" en"/home/flo", que servirá como conejillo de indias.
cd /home/flo touch it-connect.txt
Para mover el archivo it-connect.txt al directorio "/tmp", ejecute :
mv it-connect.txt /tmp/
También podemos especificar la ruta completa:
mv /home/flo/it-connect.txt /tmp/

Puedes ver que funciona perfectamente:

B. Mover una carpeta a otra carpeta
El comando mv también puede mover carpetas completas, es decir, la carpeta con su contenido. Siempre en"/home/flo", creamos un directorio llamado"data", y dentro un archivo llamado"it-connect.txt".
mkdir datos touch datos/it-connect.txt
A continuación, movemos este directorio a /tmp/ :
mv /home/flo/data/ /tmp/
Como puedes ver, la sintaxis no es mucho más complicada. Como se trata de una carpeta, hay un "/" al final de la ruta de origen.
C. Mover varios archivos a una carpeta
En lugar de utilizar el comando mv varias veces, puedes mover varios archivos a la vez. Empecemos creando 3 archivos:
touch it-connect1.txt it-connect2.txt it-connect3.txt
A continuación, podemos mover estos tres archivos a "/tmp/" de la siguiente manera:
mv it-connect1.txt it-connect2.txt it-connect3.txt /tmp/
Para que esto sea más rápido de introducir, podemos utilizar el carácter comodín ("*") para coger todos los ficheros que coincidan con este filtro. Así, con el siguiente comando, nos dirigimos a todos los elementos cuyo nombre empiece por "it-connect".
mv it-connect* /tmp/
D. Mover varias carpetas a una sola carpeta
Del mismo modo, se pueden mover varias carpetas a otra carpeta. Se pueden crear dos carpetas con mkdir :
mkdir datos1 datos2
A continuación, movemos estas dos carpetas al directorio "/tmp/":
mv datos1/ datos2/ /tmp/
E. Mover todo el contenido de una carpeta
A veces quieres mover todo el contenido de una carpeta, es decir, todos los archivos que contiene, así como todas las subcarpetas y sus archivos, sin tocar el directorio de origen.
En este ejemplo, creamos una carpeta llamada"data1", que contiene un archivo y una subcarpeta, que a su vez contiene un archivo. El objetivo es mover el contenido de"data1" a"/tmp/".
mkdir data1 mkdir data1/fotos touch data1/it-connect.txt touch data1/fotos/logo.png
Cuando muevas contenido con el comando mv, no especifiques simplemente"data1/", de lo contrario moverás la propia carpeta. Aquí, especificamos un asterisco después de "/" para especificar que es el contenido lo que queremos mover, y luego indicamos el directorio de destino.
mv datos1/* /tmp/
En este caso, la nueva ruta del directorio"photos" será"/tmp/photos".
F. Mover un archivo si la fuente es más reciente
El comando mv contiene algunos comandos bastante interesantes... Veamos algunos de ellos. Por ejemplo, la opción "-u" mueve un archivo sólo si el archivo de origen es más nuevo que el de destino. Por supuesto, esto se aplica si el archivo de destino ya existe.
He aquí un ejemplo:
mv -u /home/flo/it-connect.txt /tmp/it-connect.txt
G. Mover todos los archivos de una carpeta excepto un archivo específico
Antes de ver otras opciones, veamos un caso muy especial: queremos mover todo el contenido de un directorio, con la excepción de un único fichero. El comando mv no tiene opciones de exclusión, pero podemos engañarlo usando otro comando... Hay varias soluciones posibles. He aquí un ejemplo basado en el comando ls.
Se crean tres archivos:
touch it-connect1.txt it-connect2.txt it-connect3.txt
Ahora vamos a mover todo excepto el archivo"it-connect2.txt". Lo que da:
mv $(ls --ignore=it-connect2.txt)
De este modo, se copiará todo el contenido excepto este archivo. Se pueden añadir otras exclusiones una tras otra:
mv $(ls --ignore=it-connect2.txt --ignore=it-connect1.txt) /tmp/

H. Cambiar el nombre de un archivo o carpeta
Veamos cómo renombrar un elemento con el comando mv, ya sea un archivo o una carpeta. Empecemos por crear un archivo :
tocar it-connect.txt
Decidimos cambiar el nombre del archivo"it-connect.txt" a"it-connect.txt.old". Es como si trasladáramos el archivo a la misma ubicación, pero cambiándole el nombre.
mv it-connect.txt it-connect.txt.old
He aquí un ejemplo:

Para una carpeta, es el mismo principio, salvo que el "/" aparece al final del nombre, como en los casos anteriores.
mkdir data2021 mv data2021/ data2022/
I. Solicitar confirmación con el comando mv
Si hay un conflicto, es decir, si el archivo de destino ya existe, el comando mv no se molesta: sobrescribe el archivo de destino. Sin embargo, puedes añadir la opción "-i" para mostrar un mensaje de confirmación en caso de conflicto.
El mismo archivo se crea en dos ubicaciones diferentes:
touch /tmp/it-connect.txt touch /home/flo/it-connect.txt
A continuación, movemos el archivo de una ubicación a otra, añadiendo la opción "-i".
mv -i /home/flo/it-connect.txt /tmp/it-connect.txt
El comando mv indica un mensaje y nos pide que hagamos una elección:
mv: ¿quieres sobrescribir '/tmp/it-connect.txt'?
¡Uf! ¡He estado a punto de borrar un archivo crítico...! La sobreescritura automática puede ser útil, en un script por ejemplo, pero también puede ser peligrosa, así que vale la pena conocer esta opción.

J. Comando mv: no sobrescribir archivos existentes
En caso de conflicto, puede asegurarse de que el archivo de destino no se sobrescriba, sin tener que especificarlo manualmente. Esto invierte el modo de funcionamiento por defecto. Basta con añadir la opción "-n":
mv -n /home/flo/it-connect.txt /tmp/it-connect.txt
En caso de conflicto, la operación se cancelará. No se especificará ninguna información en la consola.
III. Conclusión
Con este tutorial, tendrás suficientes ejemplos para dominar el comando mv en Linux y mover tus archivos y carpetas.