* pbm [17 Sep 2002, 20:56 +0200]:
> > zsh% echo ${#${(@f)"$(ls -q *(.) .*(.))"}}
> > Meno di un processo penso sia infattibile :)
> e come no?
> echo ${#${(@f)"$(echo *(.) .*(.))"}}Non c'avevo pensato... ma Problema: i filename\nqualcosa > e poi comunque la zsh e' squalificata all'antidoping... :P =:> Grande! * /dev/null [18 Sep 2002, 12:01 +0200]: > > Cmq, si puo` non forkare, e basta una POSIX shell (o no? Roberto, > > non mi ricordo piu` se alla fine veriabile++ era POSIX...): "bash --posix" lo vede > > $ b=0 ; for a in * .*; do let b++; done ; echo $b > > e se vogliamo escludere le directory: > > $ b=0 ; for a in * .*; do let b++; done ; for a in */ .*/; do let > > b-- ; done ; echo $b > Certo che sono idiota. E` sufficiente: > $ set -- * .* ; echo $# > per il numero di file + directory, e > set -- */ .*/ ; echo $# > per il numero di directory. Se si vuole fare la sottrazione, poi, si > puo` usare $(( operazione )), che e` POSIX e non forka. Interessante quest'ultima, anche se sballa con un filename del tipo "a a" Invece sulla prima c'e` un problema che anche con la soluzione zsh salta fuori... e se non ci sono file o directory? echo * oppure echo */ stampano risp. * e */ Come fare? Forse un test su "$a" bisogna farlo per forza b=0 ; for a in * .*; do [ -f "$a" ] && let b++; done for a in */ .*/; do [ -d "$a" ] && let b-- ; done echo $b Ciao, Roberto

