117 lines
3.9 KiB
Bash
117 lines
3.9 KiB
Bash
|
#!/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."
|