Cómo renombrar extensiones de archivo en masa con un solo script

En ciertas ocasiones, podemos necesitar renombrar en masa las extensiones de archivos, por ejemplo, cambiar todos los archivos .txt a .md. Este artículo explica en detalle cómo usar un archivo por lotes (.bat) y un script de Shell para lograr este objetivo, incluyendo pasos detallados e indicaciones para la interacción del usuario.

Implementación con archivo por lotes

Vamos a crear un script por lotes (.bat) que guiará al usuario paso a paso para renombrar en masa las extensiones de archivos.

1. Crear el archivo por lotes

Cree un archivo llamado rename_extension.bat y copie el siguiente contenido en él:

Terminal window
1
@echo off
2
setlocal enabledelayedexpansion
3
4
rem Step 1: Prompt user for the directory
5
set "dir="
6
set /p dir="Please enter the directory you want to modify: "
7
8
rem Step 2: Ask if user wants to include subdirectories
9
set "include_subdirs="
10
set /p include_subdirs="Do you want to include all subdirectories? (y/n): "
11
12
rem Step 3: Prompt user for the original and new file extensions
13
set "orig_ext="
14
set /p orig_ext="Enter the original file extension (without dot): "
15
set "new_ext="
16
set /p new_ext="Enter the new file extension (without dot): "
17
18
rem Step 4: Perform the renaming operation
19
if /i "%include_subdirs%"=="y" (
20
rem Include subdirectories
21
for /r "%dir%" %%f in (*.%orig_ext%) do (
22
set "filepath=%%f"
23
ren "%%f" "%%~nf.%new_ext%"
24
)
25
) else (
26
rem Do not include subdirectories
27
for %%f in ("%dir%\*.%orig_ext%") do (
28
set "filepath=%%f"
29
ren "%%f" "%%~nf.%new_ext%"
30
)
31
)
32
33
echo All matching files have been renamed.
34
pause

2. Ejecutar el archivo por lotes

Haga doble clic en el archivo rename_extension.bat y siga las indicaciones para ingresar la información requerida. Esto permitirá renombrar en masa las extensiones de archivos en el directorio especificado.

Implementación con script de Shell

Vamos a crear un script de Shell (.sh) que guiará al usuario paso a paso para renombrar en masa las extensiones de archivos.

1. Crear el script de Shell

Cree un archivo llamado rename_extension.sh y copie el siguiente contenido en él:

1
#!/bin/bash
2
3
# Step 1: Prompt user for the directory
4
read -p "Please enter the directory you want to modify: " dir
5
6
# Step 2: Ask if user wants to include subdirectories
7
read -p "Do you want to include all subdirectories? (y/n): " include_subdirs
8
9
# Step 3: Prompt user for the original and new file extensions
10
read -p "Enter the original file extension (without dot): " orig_ext
11
read -p "Enter the new file extension (without dot): " new_ext
12
13
# Step 4: Perform the renaming operation
14
if [ "$include_subdirs" = "y" ] || [ "$include_subdirs" = "Y" ]; then
15
# Include subdirectories
16
find "$dir" -type f -name "*.$orig_ext" -exec bash -c 'mv "$0" "${0%.*}.'$new_ext'"' {} \;
17
else
18
# Do not include subdirectories
19
find "$dir" -maxdepth 1 -type f -name "*.$orig_ext" -exec bash -c 'mv "$0" "${0%.*}.'$new_ext'"' {} \;
20
fi
21
22
echo "All matching files have been renamed."

2. Otorgar permisos de ejecución al script

Ejecute el siguiente comando en la terminal para otorgar permisos de ejecución al script:

Terminal window
1
chmod +x rename_extension.sh

3. Ejecutar el script de Shell

Ejecute el siguiente comando en la terminal y siga las indicaciones para ingresar la información requerida. Esto permitirá renombrar en masa las extensiones de archivos en el directorio especificado:

Terminal window
1
./rename_extension.sh

Conclusión

Este artículo explica cómo usar un archivo por lotes (.bat) y un script de Shell para renombrar extensiones de archivos en masa, proporcionando pasos detallados e indicaciones para la interacción del usuario. Con estos scripts, podemos modificar fácilmente las extensiones de archivos en masa, mejorando la eficiencia del trabajo.