Linux

El comando mv en Linux : ejemplos de uso

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/

Comando mv - mover carpetas y archivos en Linux

Puedes ver que funciona perfectamente:

Linux - Comando mv

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/
Comando mv con exclusión de archivos

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:

Renombrar con el comando mv

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.

pedido mv - solicitud de confirmació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.

author avatar
Florian Burnel Co-founder of IT-Connect
Systems and network engineer, co-founder of IT-Connect and Microsoft MVP "Cloud and Datacenter Management". I'd like to share my experience and discoveries through my articles. I'm a generalist with a particular interest in Microsoft solutions and scripting. Enjoy your reading.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.