Autore Topic: Ho bisogno di uno script di shell che confronta le versioni  (Letto 2718 volte)

Offline shordi

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Ho bisogno di uno script di shell che confronta le versioni
 
L'idea è: ho una directory A piena di pacchetti di installazione per programmi generati da gambas. Vale a dire:

miprogram_0.0.1-0ubuntu1_all.deb
elotroprograma_0.0.1-0ubuntu1_all.deb
altri programmi_1.0.4-0ubuntu1_all.deb
yotro.0.0.3-ubuntu1_all.deb

in un'altra directory B ho alcune nuove versioni

miprogram_0.0.2-0ubuntu1_all.deb
programanuevo_0.0.1-0ubuntu1_all.deb

Ho bisogno di uno script che copi le nuove versioni di B in A, che sia facile e che scopra se ci sono vecchie versioni e le elimino, il che è dove non chiarisco.
L'ho fatto a occhio per sempre, ma l'elenco cresce e cresce e diventa sempre più difficile.

A causa del suo ambiente è qualcosa che non può essere risolto con Gambas, deve essere uno script di shell.


Saluti
« Ultima modifica: 31 Agosto 2019, 10:06:55 da shordi »
Non possiamo tornare

Offline splugenbrau

  • Grande Gambero
  • ***
  • Post: 205
    • Mostra profilo
Re:Ho bisogno di uno script di shell che confronta le versioni
« Risposta #1 il: 30 Agosto 2019, 22:57:54 »
Codice: [Seleziona]
#!/bin/bash

NEWFILES=$(find /your/path -type f -newermt '2018-01-17' ! -newermt '2018-01-18')
OLDFILES=$(find /your/path -type f -newermt '2015-01-01' ! -newermt '2018-01-17')

for new_file in $NEWFILES; do
      for old_file in $OLDFILES; do
            if [[ ${new_file} == *"eloprogram"* ]]; then
                  if [[ ${old_file} == *"eloprogram"* ]]; then
                        rm -f "${old_file}"
                        mv "${new_file}" "$(dirname "${old_file}")"   
                  fi
            fi
      done
done

Si può mettere in una funzione e passargli i parametri "eloprogram"... e la data di oggi ecc...  8)
Prima di farlo girare le prime volte, fai un backup !!
« Ultima modifica: 31 Agosto 2019, 07:10:54 da splugenbrau »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.152
  • Tonno verde
    • Mostra profilo
Re:Ho bisogno di uno script di shell che confronta le versioni
« Risposta #2 il: 31 Agosto 2019, 07:57:24 »
...
A causa del suo ambiente è qualcosa che non può essere risolto con Gambas, deve essere uno script di shell.

Immagino che tu non possa usare neanche uno Script Gambas...
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline shordi

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Re:Ho bisogno di uno script di shell che confronta le versioni
« Risposta #3 il: 31 Agosto 2019, 10:05:20 »
Codice: [Seleziona]
#!/bin/bash

NEWFILES=$(find /your/path -type f -newermt '2018-01-17' ! -newermt '2018-01-18')
OLDFILES=$(find /your/path -type f -newermt '2015-01-01' ! -newermt '2018-01-17')

for new_file in $NEWFILES; do
      for old_file in $OLDFILES; do
            if [[ ${new_file} == *"eloprogram"* ]]; then
                  if [[ ${old_file} == *"eloprogram"* ]]; then
                        rm -f "${old_file}"
                        mv "${new_file}" "$(dirname "${old_file}")"   
                  fi
            fi
      done
done

Si può mettere in una funzione e passargli i parametri "eloprogram"... e la data di oggi ecc...  8)
Prima di farlo girare le prime volte, fai un backup !!
Grazie splungebrau, è un piacere trovare persone che vogliono aiutare. Purtroppo non è quello di cui ho bisogno. I file non devono avere una data specifica. La differenziazione delle versioni deve essere effettuata in base al nome programma.0.0.1_all.deb rispetto al programma.0.0.2_all.deb ...
Non possiamo tornare

Offline shordi

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Re:Ho bisogno di uno script di shell che confronta le versioni
« Risposta #4 il: 31 Agosto 2019, 10:06:25 »
...
A causa del suo ambiente è qualcosa che non può essere risolto con Gambas, deve essere uno script di shell.

Immagino che tu non possa usare neanche uno Script Gambas...

No gianluigi, deve essere eseguito su un server su cui non sono installati gambas.
Non possiamo tornare

Offline splugenbrau

  • Grande Gambero
  • ***
  • Post: 205
    • Mostra profilo
Re:Ho bisogno di uno script di shell che confronta le versioni
« Risposta #5 il: 31 Agosto 2019, 11:41:30 »
Citazione
I file non devono avere una data specifica.
Il controllo di range di data era solo una sicurezza in più !!! Ma puoi sempre toglerlo.

Codice: [Seleziona]
#!/bin/bash

function aggiorna {
    NEWFILES=$(find . -type f )
    OLDFILES=$(find . -type f )
   
    for new_file in $NEWFILES; do
          for old_file in $OLDFILES; do
                if [[ ${new_file} == *"$1"* ]]; then
                      newf_version=$(echo "$(filename "${new_file}")" | egrep -o [0-9]+)
                      n_new_v=${#newf_version[@]}
                      if [[ "${old_file}" == *"$1"* ]]; then
                            oldf_version=$(echo "$(filename "${new_file}")" | egrep -o [0-9]+)
                            n_old_v=${#oldf_version[@]}
                            MAX=$n_new_v
                            if [ $n_old_v -lt $n_new_v ]; then MAX=$n_old_v fi
                            for (( i = 1 ; i < $MAX ; i++ )); do
                                  if [ "$newf_version[$i]" -gt "$oldf_version[$i]" ]; then
                                        rm "${old_file}"
                                        mv "${new_file}" "$(dirname "${old_file}")"   
                                        break
                                  fi
                            done
                      fi
                fi
          done
    done
}

aggiorna miprogram
aggiorna elotroprograma
aggiorna programanuevo
aggiorna yotro
aggiorna "altri programmi"
Va fatto ancora qualche aggiustamento.

Offline shordi

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Re:Ho bisogno di uno script di shell che confronta le versioni
« Risposta #6 il: 31 Agosto 2019, 18:19:16 »
Muchas gracias, creo que es que que busco.
De un error, pero entiendo la idea.
Non possiamo tornare

Offline splugenbrau

  • Grande Gambero
  • ***
  • Post: 205
    • Mostra profilo
Re:Ho bisogno di uno script di shell che confronta le versioni
« Risposta #7 il: 31 Agosto 2019, 18:27:23 »
Esta bien. :ciao: