[esercizio shell] Clicca QUI per vedere il messaggio nel forum |
Elisabeth |
Sono alle prese con questo esercizio:
trovare l'utente con il maggior numero di file sul sistema
che mi sembrava fattibilissimo ma mi sta mandando in crisi.
Io lo risolverei così:
NFILE=0
for USER in $(cut /etc/passwd -d : -f 1)
do
FILE=$(find / -type f -user $USER | wc -l)
if (($FILE > $NFILE))
then
NFILE=$FILE
NUSER=$USER
fi
done
echo "L'utente $USER ha il maggior numero di file sul sistema, pari a $NFILE"
Ma mi da errore..qualche idea su cosa c'è di sbagliato? |
Elisabeth |
Lo pensavo anche io, però provando a testare solamente l'if con le ((..)) funzionava :(
Alla fine ho optato per questa soluzione:
NFILE=0
for USER in $(cut /etc/passwd -d : -f 1)
do
FILE=$(find / -type f -user $USER | wc -l)
if [ $FILE -gt $NFILE ]
then
NFILE=$FILE
NUSER=$USER
fi
done
echo "L'utente $USER ha il maggior numero di file sul sistema, pari a $NFILE" |
Cronovirus |
ma aspetta: che errore ti dava? |
Elisabeth |
aaa non mi ricordo purtroppo.
Ma va beh, ormai il laboratorio è andato :) |
rogerino |
mi sapete dire come si risolve questo esercizio:
copiare tutti i file da /usr/bin nella directory corrente cambiando l'estensione da .h a .bak?? |
giuscri |
Originally posted by rogerino
mi sapete dire come si risolve questo esercizio:
copiare tutti i file da /usr/bin nella directory corrente cambiando l'estensione da .h a .bak??
Per i posteri, una possibile soluzione:
code: cp -r /usr/bin /tmp/_bin;
for FILENAME in $(find /tmp/_bin -type f|egrep "\.h$"); do
mv $FILENAME $(echo $FILENAME|sed -r "s/\.h$/.bak/");
done;
cp -r /tmp/_bin/* .
|
|
|
|