#!/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
...
A causa del suo ambiente è qualcosa che non può essere risolto con Gambas, deve essere uno script di shell.
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 ...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 !!
...
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...
I file non devono avere una data specifica.Il controllo di range di data era solo una sicurezza in più !!! Ma puoi sempre toglerlo.
#!/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"