#!/bin/bash # Variables pel resum total_zips=0 total_size=0 # Funció per a processar arxius ZIP en un directori processar_zip() { zip_file="$1" dir="$2" index_file="$dir/descript.ion" # Verificar si és un arxiu ZIP per magic number if file "$zip_file" | grep -q 'Zip archive data'; then # Obtenir el nom de l'arxiu ZIP sense la ruta zip_name=$(basename "$zip_file") # Verificar si ja ha estat registrat a descript.ion if grep -q "^$zip_name " "$index_file" 2>/dev/null; then echo "Arxiu ZIP '$zip_name' ja registrat a '$index_file'." else # Buscar i extreure el contingut de qualsevol arxiu que coincideixi amb FILE_ID.DIZ (case-insensitive) file_id_content=$(unzip -Z1 "$zip_file" | grep -i 'file_id.diz' | while read -r diz_file; do unzip -p "$zip_file" "$diz_file" 2>/dev/null | tr -d '\r' | sed ':a;N;$!ba;s/\n/@n/g' done) # Si s'ha trobat i extret l'arxiu file_id.diz if [ -n "$file_id_content" ]; then echo "$zip_name $file_id_content" >> "$index_file" echo "Arxiu ZIP '$zip_name' processat i registrat a '$index_file'." # Actualitzar resum total_zips=$((total_zips + 1)) total_size=$((total_size + $(stat -c%s "$zip_file"))) else echo "No s'ha trobat 'file_id.diz' a '$zip_name'." fi fi else echo "'$zip_file' no és un arxiu ZIP vàlid." fi } # Funció per a processar un directori processar_directori() { dir="$1" recursive="$2" # Crear descript.ion si no existeix index_file="$dir/descript.ion" if [ ! -f "$index_file" ]; then touch "$index_file" echo "Arxiu 'descript.ion' creat a '$dir'." fi # Buscar arxius ZIP en el directori for zip_file in "$dir"/*.zip "$dir"/*.ZIP "$dir"/*.Zip "$dir"/*.ZiP; do [ -e "$zip_file" ] && processar_zip "$zip_file" "$dir" done # Processar subdirectoris si s'indica recursivitat if [ "$recursive" = true ]; then for subdir in "$dir"/*/; do [ -d "$subdir" ] && processar_directori "$subdir" true done fi } # Processar un arxiu ZIP específic processar_unic_zip() { zip_file="$1" dir=$(dirname "$zip_file") processar_directori "$dir" false } # Verificar paràmetres if [ "$1" = "-r" ]; then # Mode recursiu processar_directori "." true elif [ "$1" = "-s" ] && [ -n "$2" ]; then # Modo d'arxiu ZIP únic if [ -f "$2" ]; then processar_unic_zip "$2" else echo "L'arxiu específic no existeix." fi else # Mode normal (no recursiu) processar_directori "." false fi # Mostrar resum echo "Total d'arxius ZIP nous processats: $total_zips" echo "Mida total dels arxius ZIP processats: $total_size bytes"