El script que se presenta a continuación resuelve un problema concreto: determinar qué tipos de archivo (extensiones) se encuentran dentro de uno o varios comprimidos .7z, sin necesidad de descomprimirlos.
Este análisis resulta útil para auditar backups, clasificar archivos por contenido o simplemente comprender la estructura interna de múltiples comprimidos de forma automatizada.
El script completo (GitHub)
#!/bin/bash
# ============================================================
# Script: listar_extensiones_7z.sh
# Autor: apunteshacking.com
# Fecha: Abril 2026
# Versión: 1.0
# ============================================================
# DESCRIPCIÓN:
# Analiza todos los archivos .7z del directorio actual y
# extrae las extensiones únicas de los archivos contenidos
# en su interior, sin necesidad de descomprimirlos.
# ============================================================
# USO:
# ./listar_extensiones_7z.sh
# ============================================================
# REQUISITOS:
# Tener instalado p7zip (comando '7z')
# ============================================================
# Mostrar cabecera informativa al usuario
echo ""
echo " ▶ LISTADOR DE EXTENSIONES EN ARCHIVOS .7z ◀"
echo "------------------------------------------------------------"
echo " Este script analiza todos los archivos .7z del directorio"
echo " actual y muestra las extensiones únicas que contienen."
echo "------------------------------------------------------------"
echo ""
# Crear archivo temporal
temp_file=$(mktemp)
# Procesar cada archivo .7z
for file in *.7z; do
if [ -f "$file" ]; then
echo "▶ Procesando: $file"
# Listar contenido y extraer extensiones
7z l "$file" -r 2>/dev/null | grep -oE '\.[a-zA-Z0-9]+$' >> "$temp_file"
fi
done
# Verificar si se encontraron archivos .7z
if [ ! -s "$temp_file" ]; then
echo ""
echo "▶ No se encontraron archivos .7z en el directorio actual."
echo " O los archivos encontrados no contenían extensiones válidas."
echo ""
rm "$temp_file"
exit 1
fi
# Mostrar resultados únicos ordenados
echo ""
echo "------------------------------------------------------------"
echo " RESULTADOS"
echo "------------------------------------------------------------"
echo "Extensiones encontradas:"
echo ""
sort -u "$temp_file" | nl -w 2 -s '. '
# Contar total de extensiones únicas
total=$(sort -u "$temp_file" | wc -l)
echo ""
echo "------------------------------------------------------------"
echo " Total de extensiones únicas: $total"
echo "------------------------------------------------------------"
# Limpiar
rm "$temp_file"
exit 0
BashExplicación paso a paso
Encabezado del script
#!/bin/bashBashEsta línea se llama shebang. Le dice al sistema: «Para ejecutar este archivo, usa el intérprete /bin/bash«. Sin esto, el sistema no sabría qué lenguaje usar.
Comentarios informativos
# ============================================================
# Script: listar_extensiones_7z.sh
# Autor: apunteshacking.com
# Fecha: Abril 2026
# Versión: 1.0
# ============================================================
# DESCRIPCIÓN:
# Analiza todos los archivos .7z del directorio actual y
# extrae las extensiones únicas de los archivos contenidos
# en su interior, sin necesidad de descomprimirlos.
# ============================================================
# USO:
# ./listar_extensiones_7z.sh
# ============================================================
# REQUISITOS:
# Tener instalado p7zip (comando '7z')
# ============================================================BashTodo lo que va entre # y el final de la línea es un comentario. No se ejecuta. Es buena práctica documentar:
- Nombre del script
- Autor
- Fecha y versión
- Descripción clara
- Uso esperado
- Requisitos
Esto es fundamental cuando trabajamos en equipo o publicamos herramientas.
Mensajes al usuario
echo ""
echo " ▶ LISTADOR DE EXTENSIONES EN ARCHIVOS .7z ◀"
echo "------------------------------------------------------------"
echo " Este script analiza todos los archivos .7z del directorio"
echo " actual y muestra las extensiones únicas que contienen."
echo "------------------------------------------------------------"
echo ""BashUsamos echo para mostrar información en pantalla. Los textos con y líneas son solo formato visual. Así el usuario entiende qué está pasando.
Archivo temporal
temp_file=$(mktemp)Bashmktemp crea un archivo temporal con nombre único (ej. /tmp/tmp.ABC123).
Lo guardamos en la variable $temp_file. Esto evita conflictos si varios usuarios ejecutan el script a la vez.
Bucle para procesar archivos .7z
for file in *.7z; do
if [ -f "$file" ]; then
...
fi
doneBash*.7zgenera la lista de archivos con esa extensión.[ -f "$file" ]verifica que sea un archivo regular (evita errores si no hay coincidencias).- El bucle ejecuta el bloque para cada archivo encontrado.
Comando estrella: 7z l
7z l "$file" -r 2>/dev/null | grep -oE '\.[a-zA-Z0-9]+$' >> "$temp_file"BashVamos por partes:
7z l "$file"→ Lista el contenido del.7zsin descomprimir.-r→ Modo recursivo (entra en subcarpetas dentro del.7z).2>/dev/null→ Redirige errores (como advertencias de cabeceras) anull(basura). Así no ensuciamos la salida.|→ Tubería: envía la salida al siguiente comando.grep -oE '\.[a-zA-Z0-9]+$':-o→ Solo muestra la parte que coincide.-E→ Expresión regular extendida.\.[a-zA-Z0-9]+$→ Busca un punto seguido de letras o números al final de la línea (ej..txt,.pdf,.jpg).
>> "$temp_file"→ Agrega (>>) cada extensión encontrada al archivo temporal.


Deja una respuesta