El comando mv se usa para mover y/o renombrar archivos en distribuciones Linux y BSD. Los administradores de sistemas usan regularmente mv para realizar operaciones en el sistema de archivos de Linux. No se preocupe si es un usuario principiante con poco o ningún conocimiento sobre este comando. Hoy, hemos preparado esta guía para brindarle toda la información que necesita sobre la utilidad mv. Aprenderá las diversas funciones asociadas con este comando y obtendrá la experiencia necesaria al ejecutar los comandos de ejemplo que se muestran a continuación. Por suerte para ti, mv es uno de los comandos de terminal de Linux más básicos y bastante fácil de dominar.
Ejemplo esencial del comando mv de Linux
Dado que mv ofrece solo un puñado de parámetros de línea de comandos, es muy sencillo de aprender. Sin embargo, mv también es muy robusto y, cuando se usa de manera inteligente, puede realizar operaciones de archivo complejas. Así que revise los comandos a continuación y vea cómo podemos usar mv en nuestra informática diaria.
1. Mover archivos directamente
En su uso simple, mv copia el archivo de origen en el directorio de destino y elimina el origen de su ubicación anterior. Por ejemplo, hemos creado un directorio simple llamado Test, que contiene un directorio llamado dir1 y un archivo de texto llamado prueba . Puede crearlos fácilmente usando los siguientes comandos.
$ mkdir Test && cd Test/ && mkdir dir1 && touch test $ tree $ mv test dir1/
Primero, creamos los archivos y directorios y luego usamos el comando de árbol para visualizar la jerarquía del sistema de archivos. El comando final es la operación que nos interesa. Mueve el archivo test al dir1 directorio. Entonces, el primer argumento de mv es la fuente y el segundo es el destino. Puede reutilizar el árbol para mostrar la nueva jerarquía.
2. Renombrar archivos
La sintaxis para mover y renombrar archivos es la misma. Sin embargo, debemos proporcionar el nuevo nombre en lugar del destino. En términos simples, cuando usa mv en dos archivos que residen en el mismo sistema de archivos de Linux, dará como resultado una operación de cambio de nombre de archivo.
$ cd dir1 $ mv test TEST- -
Ahora simplemente regrese al directorio principal y emita el comando de árbol nuevamente. Esto verificará que no tiene ningún archivo llamado prueba en este sistema de archivos. Debería ver el archivo que hay un nuevo archivo llamado TEST .
3. Evitar sobrescribir archivos
De forma predeterminada, mv sobrescribirá cualquier archivo que tenga el mismo nombre en el directorio de destino. Puede verificar esto usando los siguientes comandos.
$ cp TEST dir1 $ mv TEST dir1/TEST $ tree
Sin embargo, podemos evitar fácilmente que se sobrescriba usando la -n opción, como se demuestra en el siguiente ejemplo.
$ cp dir1/TEST . $ mv -n TEST dir1/TEST $ tree
Ahora podemos ver que nuestro sistema de archivos contiene ambos archivos. El -n opción también tiene una forma larga llamada –no-clobber . Pruébalos a ambos si quieres recordarlos durante algún tiempo.
4. Habilitar el modo interactivo al sobrescribir archivos
También puede configurar el modo interactivo en mv, lo que da como resultado un mensaje que le pregunta si desea sobrescribir el archivo de destino o no. Aunque es útil para los usuarios principiantes, no hay duda de que esto detendrá sus scripts de automatización.
$ mv -i TEST dir1/TEST mv: overwrite 'dir1/TEST'?
Simplemente escriba y o n en el mensaje anterior para habilitar/deshabilitar la sobrescritura de archivos. También puede usar la alternativa de formato largo –interactive en lugar de -i .
5. Crear copias de seguridad antes de sobrescribir archivos
Siempre es una buena idea crear copias de seguridad antes de realizar operaciones de archivo a gran escala. Los usuarios principiantes de Linux a menudo sobrescriben sus archivos de mala gana. Afortunadamente, mv nos permite hacer una copia de seguridad de nuestros archivos de destino con bastante facilidad. Eche un vistazo rápido a la siguiente ilustración para ver cómo funciona.
$ mv --backup TEST dir1/TEST $ tree
El resultado del comando de árbol muestra que el archivo de origen se ha movido con éxito y hay un archivo adicional llamado TEST~ en el directorio de destino. Es la copia de seguridad del archivo anterior. Utilice siempre esta opción cuando no esté seguro del directorio de destino exacto o los archivos asociados.
6. Establecer sufijo personalizado para archivos de copia de seguridad
Como ya hemos visto, mv usa el ~ símbolo como su sufijo de copia de seguridad predeterminado. Sin embargo, podemos cambiar esto a cualquier otra cosa usando -S opción. El siguiente ejemplo demuestra esto usando un nuevo sufijo de copia de seguridad .BKP.
$ mv -S .BKP TEST dir1 $ mv --suffix=.BKP TEST dir1
También puede usar el –sufijo opción en lugar de -S si tu quieres. Establecer sufijos personalizados para nuestros archivos de copia de seguridad facilita su identificación y una mejor comprensión del sistema de archivos de Linux.
7. Actualizar archivo de destino
El comando mv de Linux nos permite actualizar los archivos de destino en función de su disponibilidad y marca de tiempo. En este caso, la operación de movimiento será exitosa solo si el archivo de origen es más nuevo que el archivo de destino o si el archivo de destino falta por completo.
$ rm -ri * $ mkdir dir1 && touch test dir1/test
$ mv -u test dir1/
Primero, eliminamos todo el contenido de Test/ y luego volver a crearlos de nuevo. Hice esto, por lo que ambos archivos de prueba se crean al mismo tiempo y, por lo tanto, son iguales. Ahora, cuando intento mover prueba en dir1 , el movimiento falló y salió en silencio. Esto sucedió porque mv descubrió que eran iguales y dedujo que no se requiere ninguna actualización.
8. Configurar el contexto de seguridad de SELinux por defecto
El contexto de seguridad de SELinux etiqueta los recursos de la CPU en los sistemas donde está habilitado. Utiliza esta información para identificar si un usuario específico puede acceder a un recurso determinado o no. Puede configurar fácilmente el contexto de SELinux al valor predeterminado utilizando -Z opción, como se demuestra a continuación.
$ touch new # create another file for testing $ mv -Z new dir1/ $ mv --context new dir1/ $ ls -Z dir1/
Aquí, mv usa el contexto SELinux predeterminado de su sistema cuando mueve el nombre del archivo nuevo a su nuevo destino. Puede verificar esto usando el último comando que se muestra arriba.
9. Habilitar salida detallada
Al igual que muchos comandos de terminal de Linux tradicionales, el comando mv también nos permite mostrar resultados detallados de sus operaciones. Es especialmente útil para principiantes o cuando transfiere muchos archivos de un sistema de archivos a otro.
$ mv -v dir1/new . $ mv --verbose dir1/new . renamed 'dir1/new' -> './new'
Los comandos anteriores son equivalentes y transfieren el archivo dir1/new a nuestra Prueba carpeta. Tenga en cuenta que el punto '. El símbolo ‘ se refiere al directorio actual en sistemas operativos similares a Unix. Estos comandos deben proporcionar una breve explicación de la operación del archivo subyacente.
10. Habilitar directorio de destino
A veces, mv puede tener dificultades para asignar los archivos de origen al directorio de destino como pretende el usuario. Puede suceder si mv no logra deducir si el objetivo es un directorio de destino o un archivo. Afortunadamente, podemos decirle fácilmente a mv si se supone que el argumento de destino es un directorio o un archivo usando -t opción de mv.
$ mv -t dir1/new/ new $ mv --target-directory=dir1/new/ new
Cuando ejecuta el comando anterior, mv reubica el archivo llamado nuevo de la Prueba directorio al Test/dir1/new directorio. Tenga en cuenta que estamos pasando el directorio de destino antes del argumento de origen. Es obligatorio desde -t señala el objetivo de destino.
11. Deshabilitar directorio de destino
La utilidad mv también nos permite deshabilitar el destino objetivo por completo. Esto es útil cuando desea asegurarse de que sus argumentos de destino se traten como archivos normales de Linux. Al igual que el ejemplo anterior, este comando también tiene una forma corta y larga.
$ mv dir1/new/new . $ mv -T new dir1/new/ $ mv --no-target-directory new dir1/new/
Por lo tanto, mv tratará el destino como un archivo normal cuando usemos -T o –ningún directorio de destino opción.
12. Habilitar Forzar sobrescritura
Aunque las implementaciones modernas del comando mv de Linux no solicitan antes de sobrescribir hoy, mv aún ofrece una opción útil para habilitar la sobrescritura forzada. Puede usar esta opción para asegurarse de que sus scripts de shell de Linux sean compatibles con versiones anteriores y no se rompan en sistemas con una implementación de mv diferente.
$ mv -f test dir1/test $ mv --force test dir1/test
Los dos comandos anteriores son equivalentes y realizan la operación de movimiento sin pedir confirmación al usuario. Por lo tanto, sus scripts de automatización no se descompondrían debido a mv.
13. Quitar las barras diagonales
Cuando usa la finalización automática en terminales Linux, también agrega una barra inclinada final después de cada directorio. Puede plantear problemas durante los movimientos de archivos. Así que los desarrolladores de mv también crearon una opción útil que eliminará estas barras inclinadas por ti.
$ mv --strip-trailing-slashes dir1/new/ .
Las barras inclinadas finales La opción le dice a mv que elimine las barras inclinadas finales presentes en los argumentos SOURCE. Puede ser muy útil en ciertos escenarios, por lo que debe familiarizarse con esta opción.
14. Mover varios archivos
Los usuarios de Linux pueden usar mv para mover fácilmente una gran cantidad de archivos al mismo tiempo. El siguiente comando demuestra cómo mover más de un archivo juntos usando mv.
$ touch aaa bbb ccc $ mv aaa bbb ccc dir1/
También podemos mover archivos y directorios juntos. En este caso, mv interpreta el último argumento como la carpeta de destino. También puede utilizar la -t opción para especificar el destino objetivo.
15. Mover archivos usando comodines
El comando mv de Linux no admite expresiones regulares. Sin embargo, aún puede usar algunos caracteres comodín para realizar algunas coincidencias de patrones básicas. Eche un vistazo rápido al siguiente ejemplo para ver cómo podemos usar comodines 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
Hay algunos comodines más admitidos por mv. Aunque no son muy extensos, ayudan durante las operaciones de procesamiento de archivos de rutina.
16. Mostrar barra de progreso
Normalmente, el comando mv realiza sus operaciones dentro de un período de tiempo razonable. Sin embargo, puede llevar relativamente más tiempo cuando mueve documentos muy grandes. Los usuarios pueden incluso pensar que el sistema se ha colgado si tarda demasiado. Podemos evitar este problema forzando a mv a mostrar una barra de progreso que mantenga informado al usuario.
$ mv dir1/*.mp3 . & progress -mp $!
Este comando moverá todos los archivos mp3 de dir1/ a la Prueba directorio y mostrará un medidor de progreso práctico. Estamos usando el paquete Linux ‘progress ' para esto. Puede instalar esto usando el siguiente comando.
$ sudo apt install progress
17. Mover archivos usando Brace Expansion
El shell de comandos de Linux permite a los usuarios generar combinaciones literales utilizando un método llamado expansión de llaves. Aunque muchas personas tienden a complicar esto, en la práctica es bastante simple. Eche un vistazo de cerca a los siguientes ejemplos para aprender cómo funciona la expansión de llaves en Linux y otros sistemas similares a Unix.
$ rm new && touch new.txt new.pdf new.html $ mv new.{pdf,txt,html} dir1/new/ # brace expansion
Por lo tanto, cualquier archivo llamado nuevo que tenga extensiones .pdf/.txt/.html se moverá al directorio de destino. Dado que estamos generando los literales de nombre de archivo a partir de nuestra llave, llamamos a esta operación expansión de llave.
18. Mover archivos según el tamaño
El procesamiento de archivos implica muchas operaciones de movimiento, y los archivos grandes tienden a consumir una cantidad significativa de tiempo de CPU. Por lo tanto, muchos administradores realizan copias de seguridad de sus documentos en función de su tamaño. Mostramos a los lectores cómo mover archivos según su tamaño usando los comandos mv y find.
$ find . -type f -size +1G -exec mv "{}" large_files/ \;
El comando anterior moverá todos los archivos de más de 1 GB del directorio de trabajo actual a archivos_grandes . Simplemente puede cambiar el valor del parámetro de tamaño para personalizar su operación de movimiento.
19. Mover archivos según la fecha de modificación
La fecha de modificación es otro criterio común que se utiliza al realizar copias de seguridad de los datos del sistema. Puede encontrar todos los archivos que tienen más de una cantidad de tiempo específica usando el siguiente comando.
$ find . -mtime +90 -exec mv "{}" old_files/ \;
Este comando moverá todos los archivos que tengan más de 3 meses (90 días) a un nuevo directorio llamado old_files . Lo notable aquí es que el argumento proporcionado es en días.
20. Cambiar el nombre de varios archivos
De forma predeterminada, la utilidad mv no puede cambiar el nombre de varios archivos al mismo tiempo. Sin embargo, aún podemos usar otras herramientas como find junto con mv para operaciones de archivos tan avanzadas. El siguiente comando cambiará el nombre de todos los archivos .php a archivos .html.
$ touch {test1,test2,test3}.php $ find . -depth -name "*.php" -exec sh -c 'f="{}"; mv -- "$f" "${f%.php}.html"' \;
Este comando cambiará el nombre de cada archivo .php a archivo .html usando mv y el interruptor exec del comando de búsqueda de Linux.
21. Localice la información binaria del comando mv de Linux
Podemos averiguar dónde se encuentra el comando mv usando el comando "cuál" de Linux. Imprime el nombre de las rutas o enlaces que manejan un comando específico, como mv.
$ which mv /usr/bin/mv
También puede usar el comando "whereis" en Linux para mostrar información adicional como la ubicación del binario mv y todos los archivos manuales asociados, como se muestra a continuación.
$ whereis mv mv: /usr/bin/mv /usr/share/man/man1/mv.1.gz
22. Mostrar información de la versión
La información de versión de los comandos de terminal de Linux nos permite encontrar la versión específica de un paquete. Podemos ver fácilmente esta información de versión para mv, como se demuestra en el siguiente ejemplo.
$ mv --version
Imprimirá la información de lanzamiento del paquete mv instalado en su sistema junto con otra información. Esta información incluye el nombre de las dependencias y las personas que crearon mv.
23. Mostrar página de ayuda
La página de ayuda contiene información resumida de todas las opciones disponibles para la utilidad mv. Es una forma práctica de recordar opciones que apenas se usan.
$ mv --help
Dado que mv solo admite algunos argumentos de línea de comandos, es relativamente más fácil memorizarlos. Afortunadamente, siempre puede consultar la página de ayuda para obtener información rápida sobre cualquier opción en particular.
24. Mostrar página de manual
Al contrario de la información resumida proporcionada por la ayuda, la página del manual ofrece una visión mucho más detallada. Consulte el siguiente comando siempre que desee comprender una opción o un uso específico con más detalle.
$ man mv
Debería mostrar una guía detallada que explique todas las diferentes opciones disponibles para mv. Siempre debe pasar por la página del manual antes de probar cualquier comando que modifique el sistema de archivos.
25. Comprobar alias
Muchas distribuciones de Linux usan alias preconfigurados para hacer cumplir las opciones de línea de comandos estándar para los paquetes. Puede verificar fácilmente si mv es un alias de algo usando el siguiente comando.
$ alias | grep -iw mv
$ type mv
Sin embargo, el último comando no funcionará si su sistema Linux ha modificado el comando mv.
Pensamientos finales
El comando mv de Linux nos permite realizar muchas operaciones con archivos, como mover archivos, cambiarles el nombre, crear copias de seguridad, etc. Aunque solo permite un número limitado de opciones, podemos combinar mv con muchos comandos de terminal de Linux como el comando de búsqueda y crear combinaciones de comandos más complejas. Hemos esbozado los 25 mejores ejemplos de mv en la informática cotidiana. Algunos de ellos son básicos puros, mientras que otros pueden ser útiles para resolver problemas más dinámicos. Con suerte, hemos entregado los conocimientos esenciales que estaba buscando. Publique sus pensamientos en la sección de comentarios y háganos saber si tiene alguna pregunta.