Cómo cambiar el nombre de un directorio en Linux
Cambiar el nombre de un directorio en Linux es fácil y hay muchas formas de hacerlo. Aquí se explica cómo hacerlo, desde cambiar el nombre de un directorio hasta buscar y cambiar el nombre de muchos.
Tus datos están seguros
Cambiar el nombre de los directorios es algo que todos debemos hacer de vez en cuando.
Podemos crear un directorio y escribir mal su nombre y queremos arreglarlo. A menudo, el propósito de un directorio cambia con el tiempo o durante la vida de un proyecto, y desea cambiar el nombre para reflejar su nuevo uso. Es posible que haya descomprimido un archivo y haya creado un árbol de directorios con los nombres de los directorios en mayúsculas y desea que estén en minúsculas.
Independientemente de la causa. cambiar el nombre de un directorio no hace nada con los datos que contiene. Cambia la ruta a esos datos, pero los archivos y directorios dentro de su directorio renombrado no se ven afectados.
No cambie el nombre de los directorios del sistema. Cambiar la ruta a los archivos y comandos del sistema, por decirlo suavemente, afectará negativamente el funcionamiento de su computadora. Si necesita usar sudo
para cambiar el nombre de un directorio, a menos que realmente sepa lo que está haciendo, es probable que no deba cambiar el nombre.
Usando el comando mv
En los casos más simples, todo lo que realmente necesitamos es un mv
comando. Es una parte integral de cada distribución de Linux, por lo que no hay nada que instalar.
En mv
el momento de escribir este artículo, el equipo tiene más de 50 años. Se remonta a los primeros días de Unix, cuando los comandos cortos y crípticos estaban de moda, probablemente para reducir la cantidad de caracteres que tenían que viajar a través de líneas seriales lentas desde teletipos y terminales tontas hasta la computadora real.
En realidad significa «mover» y se puede usar para mover archivos de un directorio a otro. Si mueve un archivo a la misma ubicación en la que ya está y le da un nuevo nombre, cambiará el nombre del archivo. Y podemos hacer lo mismo con los directorios.
Este directorio tiene dos subdirectorios.
ls
Para cambiar el nombre de un directorio, usamos el comando mv. Necesitamos especificar el nombre del directorio actual y el nuevo nombre.
mv old-work archive-2
Si el directorio al que desea cambiar el nombre no está en su directorio actual, proporcione la ruta y el nombre del directorio.
mv ~/htg/old-work ~/htg/archive-2
ls
Uso del explorador de archivos
Los exploradores de archivos pueden cambiar el nombre de los directorios. La clave en la aplicación Archivos de GNOME es F2. Al seleccionar un directorio y presionar F2, se abre el cuadro de diálogo Cambiar nombre de carpeta.
Ingrese un nuevo nombre y haga clic en el botón verde Renombrar.
El directorio ha sido renombrado para usted.
Es tan simple.
Cambiar nombre de comando
Si sus necesidades son más complejas que simplemente cambiar el nombre de un directorio, es posible que deba usar rename
el comando. Esto le permite usar expresiones de Perl para renombrar archivos y directorios. Proporciona una forma más potente y flexible de cambiar el nombre de los directorios.
Hablaremos de un comando basado en Perl rename
. Hay otro comando más antiguo rename
que forma parte de las utilidades principales de Linux. Probablemente necesitará instalar el comando Perl rename
que queremos usar.
Para evitar conflictos de nombres con un rename
comando existente, el comando Perl rename
se invoca prename
en Fedora y perl-rename
Manjaro. En Ubuntu, ambos comandos rename
y prename
son enlaces simbólicos que se resuelven en un archivo binario llamado file-rename
.
Entonces, en Manjaro necesitarás usar el comando perl-rename
y en Fedora necesitarás usar prename
. rename
En Ubuntu puedes usar prename
.
Para instalar el cambio de nombre de Perl, en Ubuntu debe escribir:
sudo apt install rename
En Fedora, el comando es:
sudo dnf install prename
En Manjaro, el paquete se llama perl-rename
.
sudo pacman -Sy perl-rename
Asegúrese de usar el comando apropiado para su distribución si desea trabajar con los ejemplos.
Primeros pasos con el cambio de nombre
El comando rename
toma expresiones regulares de Perl y las aplica a un archivo o directorio, oa un grupo de archivos o directorios.
Nuestro catálogo tiene una colección de otros catálogos.
ls
Sus nombres son una mezcla de minúsculas, mayúsculas y mayúsculas y minúsculas. Podemos convertirlos todos a minúsculas con una expresión adecuada.
rename 'y/A-Z/a-z/' *
ls
Todos los directorios ahora están en minúsculas, ya sea que antes estuvieran completamente en mayúsculas o que tuvieran una letra mayúscula extraña.
Toda la magia está en la expresión. La expresión se escribe entre comillas simples » '
«. Eso es lo que quiere decir todo el equipo.
- y: Esto significa buscar cualquier carácter en el primer rango de caracteres y reemplazarlo con el carácter correspondiente en el segundo rango de caracteres.
- /AZ/az/: El primer rango son todas las letras de la «A» a la «Z», y el segundo rango son todos los caracteres de la «a» a la «z».
- *: Un asterisco comodín significa que esto se aplica a todos los directorios.
En otras palabras, el comando dice «para todos los directorios, reemplace las letras mayúsculas con sus letras minúsculas equivalentes».
Obviamente, puede cambiar el nombre de un solo directorio con rename
, aunque esto parece redundante. Serás más rápido usando mv
.
rename 's/gamma/epsilon-2/' *
ls
La «S» en esta expresión significa reemplazo. Comprueba cada directorio para ver si su nombre es «gamma». Si es así, lo reemplaza con «epsilon-2». Tenga en cuenta, sin embargo, que esto también coincidiría con un directorio llamado «gamma-zeta», por ejemplo, renombrándolo a «epsilon-2-zeta».
Esto se puede evitar agregando los metacaracteres de inicio de línea » ^
» y final de línea » $
» a la primera cláusula de la expresión.
ls
rename 's/^gamma$/epsilon-2/' *
ls
Esto deja intacto el directorio «epsilon-2».
Usar renombrar con otros comandos
Podemos usar otros comandos para encontrar los directorios en los que queremos rename
trabajar. Si tenemos un conjunto de directorios anidados y queremos renombrar todos los que terminan con «-old» para que terminen con «-archive», podemos lograr esto usando find
y xargs
.
Necesitamos usar xargs
porque rename
no acepta entrada canalizada. El comando xargs
soluciona este problema tomando la entrada canalizada y agregando otro comando a la línea de comando como un parámetro de línea de comando.
Nuestro equipo se ve así:
find. -depth -type d -name "*-old"| xargs -r rename "s/old$/archive/"
- .: Le decimos a find para empezar a buscar en el directorio actual. Por supuesto, puede ser de cualquier manera.
- -profundidad: utiliza la búsqueda en profundidad primero. Esto significa que los contenidos de los subdirectorios anidados más profundos se procesan antes que los superiores.
- -type d: busca directorios, no archivos.
- -name «*-old»: pista de búsqueda. Estamos buscando directorios con nombres que terminen en «-old».
- |: canalizamos la salida del comando de búsqueda al
xargs
comando. - xargs -r:
-r
(no ejecutar si está vacío) significa no ejecutar el comando si no hay directorios adecuados. - cambie el nombre de «s/old$/archive/»:
rename
comando para ejecutar.
Nuestro árbol de directorios se ve así antes del comando.
Ejecutemos nuestro comando:
Y podemos ver que todos los directorios relevantes, incluidos los subdirectorios, han sido renombrados.
No necesitas nada más que mv
. Si prefiere aplicaciones GUI, puede usar el explorador de archivos. Si necesita cambiar el nombre de muchos directorios, especialmente si están dispersos por todo el árbol de directorios, necesitará flexibilidad rename
.
Deja una respuesta