#!/bin/bash # Variables no inicialitzades DISCLAIMER="" DEMO="" SEPARATOR="" FILE_ID="" ZIPFILE="" ZIPSEQ="" # Preguntar el nom del fitxer Disclaimer read -p "Introdueix el nom del fitxer Disclaimer: " DISCLAIMER # Preguntar el nom del fitxer Demo read -p "Introdueix el nom del fitxer Demo: " DEMO # Preguntar què fa de separador de camps read -p "Introdueix el separador de camps: " SEPARATOR # Preguntar el nom base del futur ZIP comprimit read -p "Introdueix el nom base del ZIP Comprimit: " ZIPFILE # Preguntar el número inicial de seqüència del ZIP comprimit read -p "Introdueix el número inicial de seqüència del zip comprimit: " ZIPSEQ # Processar tots els fitxers, a excepció dels definits a DISCLAIMER i DEMO for file in *; do if [[ "$file" == "$DISCLAIMER" || "$file" == "$DEMO" ]]; then # Si el fitxer és DISCLAIMER o DEMO, l'ignorem echo "Ignorant fitxer $file." continue fi # Primer fitxer amb el que establim el patró d'execució if [[ -z "$pattern_set" ]]; then pattern_set=true echo "Processant primer fitxer per a establir el patró: $file" # Separar nom de fitxer i extensió filename="${file%.*}" extension="${file##*.}" # Parsejar el nom del fitxer aplicant el separador definit a SEPARATOR IFS="$SEPARATOR" read -ra components <<< "$filename" # Preguntar pels noms de les variables # Fer servir la variable TITLE facilita que el títol del fitxer es convertirà després a majúscules declare -A var_map for (( i=0; i<${#components[@]}; i++ )); do read -p "Introdueix el nom de la variable per al valor '${components[$i]}': " var_name var_map[$var_name]="${components[$i]}" done # Preguntar pel nom de la variable per a l'extensió read -p "Introdueix el nom de la variable per a l'extensió '$extension': " ext_var var_map[$ext_var]="$extension" # Demanar l'ordre de les variables echo "Les variables detectades són:" for key in "${!var_map[@]}"; do echo "$key: ${var_map[$key]}" done read -p "Introdueix l'ordre de les variables (separades per espais): " -a order # Generar el FILE_ID TITLE=$(echo "${var_map[${order[0]}]}" | tr '[:lower:]' '[:upper:]') FILE_ID="$TITLE" echo "Generant FILE_ID..." for var_name in "${order[@]:1}"; do FILE_ID+=$'\n'"$var_name: ${var_map[$var_name]}" done # Crear el fitxer FILE_ID.DIZ echo "$FILE_ID" | fold -w 45 > "FILE_ID.DIZ" echo "Fitxer FILE_ID.DIZ generat." # Comprimir el fitxer original, DISCLAIMER, DEMO i el FILE_ID.DIZ zip_name="${ZIPFILE}${ZIPSEQ}.zip" zip "$zip_name" "$file" "FILE_ID.DIZ" "$DISCLAIMER" "$DEMO" echo "Fitxers comprimits a $zip_name." # Esborrar el fitxer FILE_ID.DIZ rm "FILE_ID.DIZ" # Incrementar la seqüència ZIPSEQ ZIPSEQ=$((ZIPSEQ + 1)) else # Processar la resta de fitxers fent servir el patró establert echo "Processant fitxer: $file" # Separar el nom i l'extensió com abans filename="${file%.*}" extension="${file##*.}" IFS="$SEPARATOR" read -ra components <<< "$filename" # Generar el FILE_ID fent servir l'ordre anterior TITLE=$(echo "${components[0]}" | tr '[:lower:]' '[:upper:]') FILE_ID="$TITLE" for (( i=1; i<${#order[@]}; i++ )); do var_name="${order[$i]}" FILE_ID+=$'\n'"$var_name: ${components[$i]}" done # Crear i comprimir el fitxer com abans echo "$FILE_ID" | fold -w 45 > "FILE_ID.DIZ" zip_name="${ZIPFILE}${ZIPSEQ}.zip" zip "$zip_name" "$file" "FILE_ID.DIZ" "$DISCLAIMER" "$DEMO" rm "FILE_ID.DIZ" ZIPSEQ=$((ZIPSEQ + 1)) fi done echo "Procés completat."