- Dominar el comando mv permite renombrar y mover carpetas y archivos en Linux de forma rápida y segura, tanto en local como en servidores remotos.
- Los comandos cp y rm complementan a mv para copiar, eliminar y reorganizar directorios completos, aprovechando opciones como -r, -i, -f y -v.
- La herramienta rename y los bucles de shell facilitan el renombrado masivo de archivos mediante patrones y expresiones regulares.
- Usar rutas correctas, comprobar con ls y tener cuidado con comodines y opciones destructivas es clave para evitar pérdidas de datos.
Si trabajas con servidores o desarrollas proyectos en Linux, tarde o temprano vas a tener que renombrar carpetas y archivos desde la terminal. Sobre el papel suena sencillo, pero cuando estás empezando, ver comandos, rutas y opciones puede hacerse cuesta arriba, sobre todo si vienes de un entorno gráfico como GNOME, KDE o similares y estás más acostumbrado al administrador de archivos.
La buena noticia es que en Linux todo esto se resuelve con unos pocos comandos muy potentes. Con entender bien cómo funcionan mv, cp, rm y la herramienta rename, tendrás control total para renombrar directorios, moverlos, copiarlos y gestionarlos tanto en tu equipo local como en servidores remotos a través de SSH.
Conceptos básicos: directorios, rutas y terminal en Linux
Antes de tocar nada conviene tener claro qué es exactamente una carpeta en Linux: a nivel interno, un directorio es un tipo especial de archivo que almacena un índice con los nombres de los archivos y subdirectorios que contiene. Es decir, cuando renombramos una carpeta no estamos copiando ni modificando su contenido, solo cambiamos ese nombre de índice.
En Linux la estructura del sistema de archivos es jerárquica, así que las rutas pueden ser absolutas o relativas. Una ruta absoluta empieza siempre por / (por ejemplo, /home/usuario/proyecto), mientras que una relativa se interpreta a partir del directorio en el que estás ahora (por ejemplo, proyecto/img si ya estás en /home/usuario).
Para movernos por esa estructura usamos la terminal. Con cd cambiamos de directorio, con pwd vemos en qué ruta exacta estamos y con ls listamos el contenido. Estos tres comandos son la base para que los ejemplos de renombrado que veremos a continuación no te den errores de ruta.
Cuando trabajas en servidores, sobre todo en desarrollo web, es muy habitual conectar por SSH: ssh usuario@servidor. Una vez dentro, todo lo que hagas con mv, cp, rm y rename funciona igual que en tu máquina local, solo que ahora afectas a los archivos del servidor remoto.
El comando mv: mover y renombrar directorios en Linux
El protagonista absoluto para renombrar carpetas en Linux es el comando mv, acrónimo de “move”. Su misión principal es mover archivos y directorios, pero también nos sirve perfectamente para cambiarles el nombre sin moverlos de sitio.
La sintaxis general de mv es muy simple: mv ORIGEN DESTINO. El parámetro ORIGEN es el archivo o carpeta que ya existe, mientras que DESTINO es el nuevo nombre o la ruta (más nombre) a donde lo queremos mover o renombrar.
Si quieres ver todas las opciones disponibles, puedes ejecutar mv –help en la terminal. Verás algo tipo mv …, junto con un listado de parámetros y banderas que adaptan su comportamiento a lo que necesites.
Las opciones más usadas de mv a la hora de trabajar con directorios y archivos son -f, -i, -u y -v. No son obligatorias, pero te dan bastante control y seguridad, sobre todo cuando corres el riesgo de sobrescribir algo importante por accidente.
Opciones más útiles del comando mv
Cuando empiezas a renombrar y mover cosas desde la consola, lo que más miedo da es sobrescribir un archivo o carpeta sin darte cuenta. Para eso existen varias banderas de mv que conviene memorizar porque las usarás a menudo.
Con la opción -i (interactiva) mv te preguntará antes de sobrescribir un destino que ya exista. Por ejemplo, si el directorio de destino tiene el mismo nombre que el que quieres mover, mv te pedirá confirmación y podrás escribir y/n para continuar o cancelar.
La bandera -f (force) hace justo lo contrario: no pregunta nada y sobrescribe a saco. Es útil en scripts automatizados o cuando estás seguro de que el destino se puede machacar, pero no es buena idea usarla a la ligera si estás aprendiendo.
La opción -u solo moverá o renombrará cuando el archivo de origen sea más nuevo que el de destino o cuando el destino no exista todavía. Es interesante si sincronizas directorios y quieres evitar reemplazos innecesarios.
Por último, la opción -v (verbose) hace que mv muestre en pantalla qué está haciendo en cada paso. Es decir, verás líneas del estilo renamed ‘img’ -> ‘images’, algo muy útil para seguirle la pista a operaciones con muchos archivos.
Cómo renombrar una carpeta en Linux con mv
Para cambiar el nombre de un directorio sin moverlo de sitio, lo único que necesitas es indicar el nombre actual y el nuevo nombre. La forma básica sería mv carpeta_antigua carpeta_nueva, siempre estando situado en el directorio padre de esa carpeta.
Imagina que tienes una carpeta llamada img dentro de tu proyecto y quieres renombrarla a images. Si estás ya en el directorio del proyecto, bastaría con ejecutar mv img images y dirás adiós al nombre antiguo en un segundo.
Si lo quieres ver con un ejemplo más explícito, podrías listar primero el contenido con ls -l, ver el directorio img, ejecutar el comando mv -v img images y comprobar de nuevo con ls -l que ahora solo aparece images. El sufijo -v te mostrará el mensaje de renombrado para que no haya dudas.
Es importante fijarse en un detalle que suele generar confusión al principio: no se pone “/” al final del nombre del directorio cuando lo renombramos. Es decir, escribe mv img images y no mv img/ images/, porque en este contexto la barra final no es necesaria y puede dar pie a errores si la mezclas con otras rutas.
Renombrar y mover una carpeta al mismo tiempo
Una de las ventajas de mv es que te permite mover un directorio a otra ruta y de paso cambiarle el nombre en un solo comando. Esto viene genial cuando estás reorganizando un proyecto grande o limpiando la estructura de un servidor.
Supongamos que tienes una carpeta llamada ProyectoViejo en tu directorio actual y quieres moverla a /home/usuario/EspacioDeTrabajo renombrándola a ProyectoNuevo. El comando quedaría tal que así: mv ProyectoViejo /home/usuario/EspacioDeTrabajo/ProyectoNuevo.
Si lo que buscas es solo subir un nivel en la jerarquía manteniendo el nombre, puedes usar rutas relativas. Por ejemplo, para mover la carpeta img al directorio padre sin cambiarle el nombre, bastaría mv img ../img. En este caso, .. significa “el directorio de arriba”.
También puedes moverla dentro de otra carpeta y de paso renombrarla. Si tienes una carpeta files dentro de tu proyecto y quieres que img pase a llamarse images dentro de files, usarías mv img files/images. Tras ejecutarlo, la ruta final sería algo como ./files/images.
Ten en cuenta que cuando mueves un directorio entre ubicaciones, si el sistema de archivos de origen y destino es el mismo, mv hace un cambio de referencia muy rápido; pero si están en sistemas de archivos distintos, la operación equivale a copiar todo el contenido y luego eliminar el original, lo que puede tardar bastante si la carpeta es grande.
Renombrar directorios y archivos en servidores remotos con SSH
En entornos de producción y desarrollo web es muy habitual trabajar en servidores Linux a los que accedes por SSH. Desde ese momento, todos los comandos que ejecutas en la terminal afectan a los archivos del servidor, así que renombrar carpetas en remoto es igual que hacerlo en local.
Para conectarte a un servidor normalmente se usa una orden del tipo ssh tu-usuario@tu-servidor. Una vez autenticado, verás el prompt remoto y podrás moverte con cd, listar con ls y renombrar directorios con mv carpeta_vieja carpeta_nueva exactamente de la misma forma.
La única diferencia práctica respecto a tu máquina local es que aquí debes andar con más ojo, porque un error de renombrado en producción puede romper rutas usadas en aplicaciones, scripts, enlaces simbólicos o configuraciones internas del sistema.
Para minimizar riesgos es buena idea combinar mv con ls antes y después de cada operación, además de tirar de mv -i para que te pida confirmación cuando haya posibilidad de sobrescritura. También ayuda trabajar con rutas absolutas para evitar malentendidos con los directorios actuales.
Cuando renombres carpetas o archivos que son utilizados por scripts, servicios o aplicaciones web, revisa que no haya rutas codificadas con el nombre antiguo. Si las hay, actualízalas para que apunten al nuevo nombre y evita errores 404, fallos de carga de recursos o servicios que no arrancan.
Copiar directorios en Linux con cp antes de renombrar
Aunque mv te permite renombrar directamente, hay muchas situaciones en las que prefieres jugar sobre seguro y trabajar con una copia antes de tocar el original. Para eso entra en escena el comando cp, encargado de copiar archivos y directorios.
La sintaxis básica de cp se podría resumir como cp ORIGEN DESTINO. Si ORIGEN es un archivo, no hay mucha complicación; pero si quieres copiar una carpeta entera, hay un matiz importante: debes usar la opción -r o -R para que la copia sea recursiva e incluya todo su contenido.
Por ejemplo, si necesitas duplicar la carpeta fonts en la misma ubicación con otro nombre, podrías hacer algo como cp -r fonts/ fonts2. La barra tras fonts es recomendable para dejar claro que es un directorio, aunque cp suele deducirlo; en cualquier caso, muchas guías recomiendan este formato para evitar errores de interpretación.
Si quieres copiar esa misma carpeta de un directorio a otro, usa rutas relativas o absolutas según te convenga. Un ejemplo clásico sería cp -r fonts/ ../fonts2, que copia la carpeta fonts al directorio superior con el nombre fonts2, manteniendo intacta la original.
Entre las opciones de cp, las más comunes son -i (pedir confirmación antes de sobrescribir), -v (modo verboso para ver el progreso) y, por supuesto, -r/-R para indicar recursividad en directorios. Puedes ver el resto con man cp o cp –help si quieres afinar más tus copias.
Renombrar archivos en Linux con mv
Todo lo que hemos visto para directorios se aplica igual a archivos individuales: mv sirve tanto para mover como para cambiar el nombre de un archivo, y la sintaxis es prácticamente idéntica pero a nivel de fichero.
Si estás en un directorio que contiene el archivo archivo1.txt y quieres que pase a llamarse archivo2.txt, solo tienes que ejecutar mv archivo1.txt archivo2.txt. El contenido no cambia, únicamente el nombre que lo representa en el sistema de archivos.
Si no te encuentras en el directorio correcto, primero desplázate con cd o bien indica la ruta completa en el comando. Podrías hacer algo como cd /home/user/docs/files y luego mv archivo1.txt archivo2.txt, o directamente mv /home/user/docs/files/archivo1.txt /home/user/docs/files/archivo2.txt.
Para que te hagas una idea, renombrar un archivo con mv equivale, a nivel conceptual, a “copiarlo a un nuevo nombre y borrar el original”, aunque internamente el sistema de archivos lo gestiona de manera mucho más eficiente y sin duplicar datos.
Como ocurre con las carpetas, si mueves un archivo entre sistemas de archivos distintos, mv realizará internamente una copia y luego borrará el original; si se mantiene dentro del mismo sistema, solo cambia referencias internas y la operación es instantánea.
Renombrar varios archivos de golpe con bucles y find
mv por sí solo no tiene una opción específica para renombrar muchos archivos en bloque, pero se lleva de maravilla con la shell de Linux, así que puedes combinarlo con bucles for, while o con el comando find para hacer renombrados masivos.
Un ejemplo típico es cambiar de extensión a un conjunto de archivos. Si quieres que todos los .txt de tu directorio actual pasen a ser .pdf, podrías usar un bucle for como este: for f in *.txt; do mv — «${f}» «${f%.txt}.pdf»; done. Aquí se recorre cada fichero que termina en .txt, se “corta” la parte .txt y se sustituye por .pdf.
Ese tipo de bucles es muy flexible y te permite hacer prácticamente cualquier transformación de nombres que seas capaz de expresar con la sintaxis de la shell. Eso sí, conviene probar primero en un directorio de pruebas para evitar líos si no dominas todavía las expansiones de parámetros.
También puedes usar find para localizar archivos que cumplan ciertas condiciones (por nombre, por tipo, por fecha, etc.) y aplicarles mv en una acción -exec o con un bucle while leyendo los resultados. Esto es muy útil para renombrados más complejos en estructuras de directorios grandes.
Si todo esto te suena un poco avanzado, no te preocupes: con el tiempo verás que combinar mv con bucles te ahorra muchísimo trabajo y te permite automatizar tareas repetitivas con unas pocas líneas de shell script.
El comando rename: renombrado masivo avanzado
Además de mv, en muchas distribuciones existe una herramienta llamada rename que está pensada específicamente para renombrar lotes completos de archivos de forma muy potente, usando expresiones regulares de Perl.
Este comando no suele venir siempre preinstalado, pero añadirlo es trivial. En Debian, Ubuntu, Linux Mint y derivados puedes usar sudo apt install rename. En CentOS o RHEL lo habitual es sudo yum install rename. Y en Arch Linux se suele recurrir a paquetes como perl-rename desde AUR (por ejemplo con yay o yaourt).
La sintaxis típica de rename tiene esta pinta: rename ‘s/patron_antiguo/patron_nuevo/’ archivos. Lo que va entre comillas es una expresión regular Perl de sustitución, donde “s/esto/por_esto_otro/” indica qué patrón quieres encontrar y por qué lo quieres sustituir.
Por ejemplo, si en un directorio has creado unos archivos llamados file1.txt, file2.txt, file3.txt, file4.txt y file5.txt (algo que puedes hacer rápido con mkdir filetorename; cd filetorename; touch file{1..5}.txt), podrías renombrar solo file1.txt a newfile1.txt con rename ‘s/file1/newfile1/’ file1.txt.
Si lo que necesitas es cambiar la extensión de todos los .txt a .php, bastaría algo como rename ‘s/.txt/.php/’ *.txt. Después de ejecutar el comando, puedes comprobar qué ha pasado con ls para asegurarte de que todos los nombres se han transformado como esperabas.
Ejemplos prácticos con rename: mayúsculas, minúsculas y espacios
Una de las ventajas de rename es que, gracias a las expresiones regulares de Perl, permite hacer transformaciones muy específicas y que serían bastante engorrosas con un simple bucle y mv. Hay varios casos de uso muy típicos que conviene tener en mente.
Si quieres convertir todos los nombres de archivo de un directorio a mayúsculas, puedes ejecutar algo como rename ‘y/a-z/A-Z/’ *. Esta sintaxis usa la operación de transliteración “y”, que sustituye cada letra minúscula por su equivalente mayúscula.
Para hacer lo contrario, es decir, pasar todos los nombres a minúsculas, el comando sería rename ‘y/A-Z/a-z/’ *. Esto ayuda mucho cuando te encuentras con sistemas donde la mezcla de mayúsculas y minúsculas se ha ido de madre con el tiempo.
Otro caso habitual son los archivos con espacios en el nombre, que pueden ser bastante molestos al trabajar en la terminal. Puedes reemplazar espacios por guiones bajos con algo del estilo rename ‘y/ /_/’ *, evitando así tener que andar escapando los espacios con barras invertidas o comillas.
Si los archivos a modificar están en otro directorio, también puedes pasarle la ruta directamente a rename, por ejemplo rename ‘s/.txt/.php/’ RUTA/DE/ARCHIVOS. De esa forma no necesitas cambiar de directorio antes de lanzar el comando.
Para ver todas las opciones soportadas por tu versión concreta de rename, es recomendable lanzar un rename –help o revisar su página de manual. Ten en cuenta que hay variantes de rename según la distribución, así que siempre viene bien comprobar la sintaxis exacta disponible en tu sistema.
Eliminar la herramienta rename cuando no la necesites
Si en algún momento decides que no quieres tener rename instalado en tu sistema (por ejemplo, porque en un servidor de producción prefieres limitar herramientas disponibles), puedes desinstalarlo fácilmente con el mismo gestor de paquetes que usaste para instalarlo.
En distribuciones basadas en Debian como Ubuntu o Linux Mint, podrías ejecutar sudo apt remove rename. Esto eliminará el paquete y dejará de estar disponible en la terminal, aunque siempre podrás reinstalarlo más adelante si lo echas de menos.
En CentOS, RHEL y derivadas, el comando equivalente para borrar el paquete suele ser sudo yum remove rename, lo que retirará la utilidad de renombrado masivo del sistema.
En cualquier caso, incluso sin rename instalado, siempre tendrás la posibilidad de renombrar directorios y archivos con mv y, si lo necesitas, construir tus propios scripts de shell para automatizar tareas más complejas.
La clave está en elegir la herramienta que mejor se adapte a tu flujo de trabajo y al entorno en el que estás operando: en una máquina personal puede tener sentido tenerlo todo instalado, mientras que en un servidor muy crítico igual prefieres ir con más “dieta” de comandos adicionales.
Eliminar archivos y directorios con rm: cuidado al limpiar
En cualquier operación de organización de archivos suele llegar el momento de borrar lo que ya no hace falta. En Linux el comando responsable de esto es rm, que permite eliminar tanto archivos individuales como directorios completos.
La sintaxis general de rm puede escribirse como rm ARCHIVO…. Si lo que quieres es borrar un archivo suelto, como un log antiguo, algo tan simple como rm fichero.log ya hace el trabajo, siempre que tengas permisos para ello.
Para tratar con directorios es necesario usar la opción -r o -R, que activa el borrado recursivo. Por ejemplo, rm -r carpeta intentará eliminar la carpeta y todo su contenido (subdirectorios y archivos incluidos), pero lo hará sin pedir confirmación por cada elemento si no añades más banderas.
Si quieres ir un paso más allá y forzar el borrado incluso cuando haya restricciones o archivos de solo lectura, existe la combinación rm -rf carpeta, que mezcla recursividad y “force”. Es muy potente, pero también muy peligrosa: un despiste con este comando puede borrar media máquina.
Por eso, en entornos en los que prefieres ir con más cuidado, es buena idea combinar -r con -i, de modo que rm te pregunte si quieres borrar cada archivo o directorio. Algo como rm -ri carpeta te obligará a confirmar cada paso, lo que reduce el riesgo de borrar algo que no debías.
Borrar directorios vacíos y otros detalles de rm
Además de rm, existe un comando específico llamado rmdir cuya única función es borrar directorios vacíos. Si el directorio contiene algo en su interior, rmdir fallará y te avisará de que no puede borrarlo porque no está vacío.
Esto hace que rmdir sea una opción algo más segura cuando quieres limpiar carpetas que sabes que ya no contienen archivos, por ejemplo después de mover su contenido a otro sitio. Para ver todas sus opciones puedes ejecutar man rmdir desde la terminal.
Volviendo a rm, además de -i, -f, -r/-R y -v (para listar lo que va borrando), ten presente que puedes usar comodines como * y ? para seleccionar grupos de archivos. Un caso típico es eliminar todos los .txt de un directorio con algo como rm *.txt.
También es posible borrar varios archivos a la vez indicándolos de forma explícita, por ejemplo rm archivo1.log archivo2.log archivo3.log. Esto te ahorra teclear rm varias veces cuando sabes exactamente qué ficheros quieres eliminar.
En cualquier caso, cada vez que vayas a lanzar un rm con comodines o con -r, merece la pena repasar el comando antes de darle a Enter y, si es posible, hacer un ls previo para comprobar qué archivos coinciden con el patrón que has usado.
Dominar bien rm, mv, cp y, cuando lo necesites, rename te permitirá trabajar con soltura tanto en tu escritorio Linux como en servidores remotos, renombrando carpetas y archivos, moviéndolos, copiándolos o borrándolos sin depender del entorno gráfico y con la tranquilidad de saber exactamente qué estás haciendo en cada momento.
Tabla de Contenidos
- Conceptos básicos: directorios, rutas y terminal en Linux
- El comando mv: mover y renombrar directorios en Linux
- Opciones más útiles del comando mv
- Cómo renombrar una carpeta en Linux con mv
- Renombrar y mover una carpeta al mismo tiempo
- Renombrar directorios y archivos en servidores remotos con SSH
- Copiar directorios en Linux con cp antes de renombrar
- Renombrar archivos en Linux con mv
- Renombrar varios archivos de golpe con bucles y find
- El comando rename: renombrado masivo avanzado
- Ejemplos prácticos con rename: mayúsculas, minúsculas y espacios
- Eliminar la herramienta rename cuando no la necesites
- Eliminar archivos y directorios con rm: cuidado al limpiar
- Borrar directorios vacíos y otros detalles de rm