Newsgroup: it.comp.os.linux.iniziare
Titolo: Per ogni file...

Ciao
Scusate se mi riduco a domandare queste cose, ma č piuttosto
urgente...
Allora, ho un programma, che accetta come parametro il nome di un
file. Devo ripetere questa operazione per tutti i file contenuti in
una directory. Come si fa?? Con un pipeline con ls? Se sģ, come devo
passargli il parametro???
Grazie 1000
Palantir


$ for i in ./*; do programma $i; done
-- 
Enrico Bodo  -   PhD student
University of Rome "La Sapienza"
Department of Chemistry 

 una directory. Come si fa??
Se usi i caratteri jolly sulla linea di comando, la shell si occupa di
"espandere" l'elenco dei file.
Cioe' digitare
$ tuocomando *
equivale a digitare tuocomando primofile secondofile terzofile...
e cosi' via. Tutto quello che devi fare e' assicurarti che il tuo comando
sia in grado di leggersi questa spataffiata e trattarla come si deve.
Se non lo e', rimane l'altra soluzione gia' suggerita: chiudere il tutto
dentro uno script.
Davide

 passargli il parametro???
find . -exec nomecomando -opzionicomando {} \;
oppure un ciclo `for' direttamente dalla shell
for i in *; do nomecomando -opzionicomando $i ; done
ciao
-- 
Non dimentico mai una faccia, ma nel tuo caso faro' un'eccezione.
              				-- Groucho Marx
 
_tagliami_ per rispondere in email

 passargli il parametro???
for file in `ls`; do
	comando $file
done
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"Another Brick in the Wall part 2"
We don't need no pull-down-menus
We don't need no rescaled fonts
No dark icons in the corner
Hackers, leave those Macs alone.
Hey! Hackers! Leave them Macs alone!
All in all it's just another WIMP up for sale
All in all you're just another WIMP up for the sale.

Come si fa?? Con un pipeline con ls?
	ls | comando
-- 
                                                                  __
 __                                                          __  ///
| _          Computer Science, Swiss Federal Institute       \\\///
|__|iambo    of Technology - mailto:
ggia...@iiic.ethz.ch
     \X//


I metodi che ti hanno consigliato sono i migliori.
Per dovere di cronaca te ne segnalo altri due che
pero` non funzionano se i file sono troppi:
non si puo` passare piu` di un certo numero di argomenti ad un 
comando.
$ tuocomando `ls dir`
$ ls dir | xargs tuocomando
Pero` attento che se, per esempio, fai 
$ ls -R / | xargs tuocomando
la risposta sara`
bash: /bin/ls: Argument list too long
ciao, Andrea

 bash: /bin/ls: Argument list too long
solo se:
ls -R * | xargs ...
      ^ [1]
[1] e` il carattere jolly _*_ usato per indicare tutti i file che provoca
    il messaggio di:
    			*bash: <cmd>: Argument list too long*
-- 
Mario Michele Macaluso     -o)  | You will never amount to much.   -- Munich 
m.macaluso .@. 
libero.it
   /\\  | Schoolmaster, to Albert Einstein, age 10   
                          _\\_v |                                            
                                |                                            
Kernel 2.2.14-5.0 on a i586     |                                            
(All addresses in headers are fake. Only one dot in signature.)

done
E volendo, per evitare i non file:
for file in `ls -l|grep ^\-|cut -c57-`;do
	comando $file
done
-- 
Ci sentiamo  |  Remigio Zedda  || Attenzione! campo "From:" alterato
ciao Remigio |                 ||==> E-mail: 
remi...@tiscalinet.it
-------------|      ..si` d'accordo.. ma con la Deb e` un'altra cosa!
/* Linux 2.2.17 su Debian GNU/Linux 2.2 Potato */