Algunas de las tareas más básicas en una terminal en Linux son copiar y mover archivos y carpetas en nuestro sistema de archivos. En este caso se hablará sobre mover archivos y carpetas y también renombrarlos. Existen diferentes formas de hacerlo, ya que en algunas se trata de mover de forma recursiva o bajo ciertas condiciones con filtros. Por dar algunos ejemplos con filtros: mover archivos con determinada extensión y mover archivos ocultos del sistema.
Para la ejecución de comandos hay que tener en cuenta que es necesario contar con los permisos adecuados de lectura y escritura. Si hacemos uso de sudo para mover los archivos y carpetas pasan a pertenecer al usuario root automáticamente.
Renombrar archivos y carpetas (cambiar nombre)
Para esto usamos el mismo comando mv
que cuando movemos archivos, pero especificando la misma ruta de origen y destino:
mv archivo.ext nuevo-nombre.ext
mv /origen/archivo /origen/archivo
Con cualquiera de estos dos comandos solo se cambiará el nombre del archivo especificado.
Mover archivos y carpetas
Para mover archivos o carpetas usamos el comando mv
. El formato de mv
es:
mv opciones -T ORIGEN DESTINO
mv opciones ORIGEN DESTINO
mv opciones -t DIRECTORIO ORIGEN
Normalmente mv
renombra o mueve los elementos según donde se encuentre el origen y destino, por ejemplo, al mover un archivo en el mismo sistema de archivos solo se le cambia el nombre y si lo hacemos entre dos diferentes sistemas de archivos se copia y luego se elimina el origen.
Algunas opciones disponibles para el comando:
- -f, --force: no pregunta para sobreescribir elementos.
- -i, --interactive: contrario a --force, pide confirmación antes de sobreescribir elementos.
- -t, --target-directory=DIRECTORIO: se especifica el directorio destino, útil cuando se especifican varios elementos en forma de argumentos.
- -T, --no-target-directory: trata el destino como si fuera un archivo.
- -u, --update: mueve el archivo ORIGEN al destino solo si es más nuevo que otro que ya exista.
- -v, --verbose: muestra detalladamente qué es lo que está haciendo el comando durante la ejecución.
Mover archivos individuales
Para mover un archivo individual conservando el nombre, excluimos el nombre en la ruta de destino:
mv /carpeta-origen/archivo.ext /carpeta-destino/
Para mover un archivo individual y cambiarle el nombre al mismo tiempo usamos:
mv /carpeta-origen/archivo-antiguo.ext /carpeta-destino/archivo-renombrado.ext
Mover archivos y carpetas de forma recursiva
Cuando usamos mv
no es necesario especificar que se moverán los elementos de forma recursiva, esto ocurre de forma predeterminada, contrario a usar el comando cp
. Por lo que si usamos el comando para mover una carpeta podemos estar seguros de que se moverán todos los archivos y carpetas.
Mover únicamente archivos de una carpeta
Si tenemos una carpeta con varios archivos y carpetas dentro, solo necesitamos mover los archivos:
find /directorio-origen/ -maxdepth 1 -type f | xargs mv -t /directorio-destino/
Mover solo un tipo de archivos basado en extensión
Para esto solo necesitamos ejecutar:
mv /origen/*.extension /destino/
El único problema del comando es que solo funciona con el primer nivel de archivos y no de forma recursiva.
Mover solo archivos ocultos
Si únicamente queremos mover archivos ocultos, usamos:
mv /origen/.* /destino/
Se usa un punto al principio porque los archivos ocultos en Linux tienen esta característica.