Prova Pratica 2011.06.22

From Sistemi Operativi
Revision as of 10:51, 13 April 2015 by MV (talk | contribs) (Created page with "<source lang="text"> 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 ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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