Prova Pratica 2011.06.22
Jump to navigation
Jump to search
Scrivere uno script bash o un programma python che metta in ordine tutti i file di un sottoalbero dal piu' vecchio al piu' recente.
La stampa finale deve mostrare solamente il path relativo dei file.
Soluzione di MV (bash)
SCRIPT=$0
# il primo script è lanciato con 1 parametro: directory
# le chiamate ricorsive son fatte con 2 parametri: directory file
if (( $# < 1 ))
then
echo "inserire il pathname di una directory come parametro"
exit 1
fi
if [ ! -d $1 ]
then
echo "`pwd`/$1 non esiste o non è una directory"
exit 1
fi
DIR=$1
if (( $# == 2))
then
FILE=$2 # gli script ricorsivi usano lo stesso file del chiamante
else
FILE=tmp$$ # lo script iniziale crea un file temporaneo
fi
# salvo nel file temporaneo le informazioni che mi interessano di tutti i file
for i in `ls $DIR`
do
if [ -f $DIR/$i ]
then
stat -c "%y %n" $DIR/$i >> $FILE
elif [ -d $DIR/$i ]
then
$SCRIPT $DIR/$i $FILE # chiamata ricorsiva
fi
done
# eseguito solo dal primo script (non da quelli ricorsivi)
if (( $# != 2))
then
BEGIN=37 # indica il primo carattere da stampare per ogni riga
# cioè tutti quelli prima indicano la data di modifica del file
sort $FILE | cut --characters="$BEGIN-" # riordino per data e stampo il nome
rm $FILE
fi