.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Sistemi operativi I (http://www.dsy.it/forum/forumdisplay.php?forumid=269)
-- [esercizio shell] (http://www.dsy.it/forum/showthread.php?threadid=43803)


Posted by Elisabeth on 04-09-2014 11:46:

[esercizio shell]

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?


Posted by Cronovirus on 04-09-2014 14:42:

Secondo me stai sbagliando sintassi nella condizione dell'if! guarda qui http://stackoverflow.com/questions/...thmetic-in-bash


Posted by Elisabeth on 04-09-2014 15:04:

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"


Posted by Cronovirus on 04-09-2014 15:37:

ma aspetta: che errore ti dava?


Posted by Elisabeth on 07-09-2014 09:23:

aaa non mi ricordo purtroppo.
Ma va beh, ormai il laboratorio è andato :)


Posted by rogerino on 09-02-2015 13:14:

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??


Posted by giuscri on 23-07-2015 13:28:

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/* .


All times are GMT. The time now is 02:18.
Show all 7 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.