Mover archivos en Linux puede parecer relativamente sencillo, pero hay más opciones que la mayoría de la cuenta. Este artículo enseña a los principiantes Cómo mover archivos en la GUI y en la línea de comandos, pero también explica lo que realmente está sucediendo debajo del capó, y aborda las opciones de la línea de comandos que muchos usuarios de experiencia rara vez han explorado.

Mover qué?

antes de profundizar en Mover archivos, vale la pena echar un vistazo más de cerca a lo que realmente sucede al mover objetos del sistema de archivos., Cuando se crea un archivo, se asigna a un inodo, que es un punto fijo en un sistema de archivos que se utiliza para el almacenamiento de datos. Puede lo que inode asigna a un archivo con el comando ls:

$ ls --inode example.txt
7344977 example.txt

Cuando mueve un archivo, en realidad no mueve los datos de un inodo a otro, solo asigna al objeto de archivo un nuevo nombre o ruta de archivo. De hecho, un archivo conserva sus permisos cuando se mueve, porque mover un archivo no lo cambia ni lo vuelve a crear.

Los inodos de archivo y directorio nunca implican herencia y son dictados por el propio sistema de archivos., La asignación de inodos es secuencial en función de cuándo se creó el archivo y es totalmente independiente de cómo Organice su equipo. Un archivo «dentro» de un directorio puede tener un número de inodo menor que su directorio padre, o uno mayor. Por ejemplo:

$ mkdir foo
$ mv example.txt foo
$ ls --inode
7476865 foo
$ ls --inode foo
7344977 example.txt

cuando se mueve un archivo de un disco duro a otro, sin embargo, el inodo es muy probable que cambie. Esto sucede porque los nuevos datos tienen que ser escritos en un nuevo sistema de archivos. Por esta razón, en Linux el acto de mover y renombrar archivos es literalmente la misma acción., Ya sea que mueva un archivo a otro directorio o al mismo directorio con un nuevo nombre, ambas acciones son realizadas por el mismo programa subyacente.

Este artículo se centra en mover archivos de un directorio a otro.

Moving with a mouse

la GUI es una capa de abstracción amigable y, para la mayoría de las personas, familiar sobre una colección compleja de datos binarios. También es la primera y más intuitiva forma de mover archivos en Linux. Si está acostumbrado a la experiencia de escritorio, en un sentido genérico, entonces probablemente ya sepa cómo mover archivos alrededor de su disco duro., En el escritorio GNOME, por ejemplo, la acción predeterminada al arrastrar y soltar un archivo de una ventana a otra es mover el archivo en lugar de copiarlo, por lo que probablemente sea una de las acciones más intuitivas en el escritorio:

El Administrador de archivos Dolphin en el escritorio KDE Plasma por defecto solicita al usuario una acción. Mantener pulsada la tecla Mayús mientras arrastra un archivo fuerza una acción de mover:

mover en la línea de comandos

el comando shell destinado a mover archivos en Linux, BSD, Illumos, Solaris y MacOS es mv., Un comando simple con una sintaxis predecible, mv <source> <destination> mueve un archivo de origen al destino especificado, cada uno definido por una ruta de archivo absoluta o relativa. Como se mencionó anteriormente, mv es un comando tan común para los usuarios de POSIX que muchos de sus modificadores adicionales son generalmente desconocidos, por lo que este artículo trae algunos modificadores útiles a su atención si usted es nuevo o experimentado.,

sin embargo, no todos los comandos mv fueron escritos por la misma gente, por lo que puede tener GNU MV, BSD mV o Sun MV, dependiendo de su sistema operativo. Las opciones de comandos difieren de una implementación a otra (BSD mv no tiene opciones largas en absoluto) así que consulte su página de manual de mv para ver qué es compatible, o instale su versión preferida en su lugar (ese es el lujo del código abierto).,

Mover un archivo

Para mover un archivo de una carpeta a otra con mv, recuerdo la sintaxis mv <fuente> <destino>. Por ejemplo, para mover el archivo ejemplo.txt en su directorio de documentos:

$ touch example.txt
$ mv example.txt ~/Documents
$ ls ~/Documents
example.txt

Al igual que cuando mueve un archivo arrastrándolo y soltándolo en un icono de carpeta, este comando no reemplaza documentos con ejemplo.txt. En su lugar, MV detecta que Documents es una carpeta y coloca el ejemplo.archivo txt en él.,

También puede, convenientemente, cambiar el nombre del archivo a medida que lo mueve:

$ touch example.txt
$ mv example.txt ~/Documents/foo.txt
$ ls ~/Documents
foo.txt

Eso es importante porque le permite cambiar el nombre de un archivo incluso cuando no desea moverlo a otra ubicación, así:

$ touch example.txt$ mv example.txt foo2.txt$ lsfoo2.txt

mover un directorio

el comando mv no diferenciar un archivo de un directorio de la manera CP lo hace., Puede mover un directorio o un archivo con la misma sintaxis:

$ touch file.txt
$ mkdir foo_directory
$ mv file.txt foo_directory
$ mv foo_directory ~/Documents

mover un archivo de forma segura

Si copia un archivo a un directorio donde ya existe un archivo del mismo nombre, el comando mv reemplaza el archivo de destino con el que está moviendo, de forma predeterminada. Este comportamiento se llama golpeteo, y a veces es exactamente lo que pretende. Otras veces, no lo es.

algunas distribuciones alias (o usted puede escribir su propio) mv a MV interactive interactive, que le pide confirmación. Algunos no., De cualquier manera, puede usar la opción interactive interactive o-i para asegurarse de que mv solicite confirmación en caso de que dos archivos del mismo nombre estén en conflicto:

$ mv --interactive example.txt ~/Documents
mv: overwrite '~/Documents/example.txt'?

Si no desea intervenir manualmente, use –no-clobber o-n en su lugar. Esta bandera rechaza silenciosamente la acción move en caso de conflicto. En este ejemplo, un archivo llamado example.,txt ya existe en ~ / Documents, por lo que no se mueve desde el directorio actual como se indica:

$ mv --no-clobber example.txt ~/Documents
$ ls
example.txt

Moving with backups

Si está utilizando GNU MV, hay opciones de copia de seguridad que ofrecen otro medio de movimiento seguro. Para crear una copia de seguridad de cualquier archivo de destino en conflicto, utilice la opción-b:

$ mv -b example.txt ~/Documents
$ ls ~/Documents
example.txt example.txt~

Este indicador garantiza que mv complete la acción Mover, pero también protege CUALQUIER archivo preexistente en la ubicación de destino.,

otra opción de copia de seguridad de GNU es –backup, que toma un argumento que define cómo se llama el archivo de copia de seguridad:

  • existing: si las copias de seguridad numeradas ya existen en el destino, entonces se crea una copia de seguridad numerada. De lo contrario, se utiliza el esquema simple.
  • none: no crea una copia de seguridad incluso si backup backup está establecido. Esta opción es útil para anular un alias mv que establece la opción de copia de seguridad.
  • numerado: añade un número al archivo de destino.,
  • simple: agrega el archivo de destino con un~, que puede ocultarse convenientemente de su vista diaria con la opción ignore ignore-backups para ls.

por ejemplo:

se puede establecer un esquema de copia de seguridad predeterminado con la variable de entorno VERSION_CONTROL. Puede establecer variables de entorno en su ~/.archivo bashrc o dinámicamente antes de su comando:

la opción backup backup todavía respeta la opción interactive interactive or-i, por lo que todavía le pide que sobrescriba el archivo de destino, a pesar de que crea una copia de seguridad antes de hacerlo:

puede sobrescribir-I con la opción force force o-f.,

la opción backup backup no está disponible en BSD mv.

Mover muchos archivos a la vez

Al mover varios archivos, mv trata el final de directorio denominado como el destino:

$ mv foo bar baz ~/Documents
$ ls ~/Documents
foo bar baz

Si el elemento final no es un directorio, mv devuelve un error:

$ mv foo bar baz
mv: target 'baz' is not a directory

La sintaxis de GNU mv es bastante flexible., Si no puede proporcionar el comando mv con el destino como argumento final, use la opción target target-directory o-t:

$ mv --target-directory=~/Documents foo bar baz
$ ls ~/Documents
foo bar baz

esto es especialmente útil cuando se construyen comandos mv a partir de la salida de algún otro comando, como el comando find, xargs o GNU Parallel.

Moving basado en mtime

con GNU MV, puede definir una acción move basada en si el archivo que se mueve es más nuevo que el archivo de destino que reemplazaría., Esta opción es posible con la opción update update o-u, y no está disponible en BSD mv:

Este resultado se basa exclusivamente en el tiempo de modificación de los archivos, no en una diferencia de los dos archivos, así que úselo con cuidado. Es fácil engañar a mv con un simple comando táctil:

Obviamente, esta no es la función de actualización más inteligente disponible, pero ofrece una protección básica contra la sobreescritura de datos recientes.

mover

Hay más formas de mover datos que solo el comando mv, pero como el programa predeterminado para el trabajo, mv es una buena opción universal., Ahora que sabe qué opciones tiene disponibles, puede usar mv más inteligente que nunca.

Deja una respuesta

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