Newsgroup: it.comp.macintosh
Titolo: Contare i caratteri di un testo: parte seconda

Per prima cosa vorrei ringraziare ancora suppaman, Bill Clinton,
FabriXio, Marco e tutti quelli che si sono prodigati nel darmi una
mano a dare un corpo fisico a questo librone. Ho provato, usando le
istruzioni ricevute, a fare una sorta di "conversione di massa" dei
file rtf in txt per darli in pasto alla pipe e a wc, ma con scarsi
risultati.
Sono riuscito a far aprire a rtf2txt tutti i file rtf con un colpo
solo, ma poi non so come dirgli di salvarli, e/o di passarli a wc per
la conta senza salvarli.
COn un comando del genere, che ho mutuato dalle istruzioni ricevute:
find . ! -name ".*" -type f -exec rtf2txt {} \;
sono riuscito a far sì che rtf2txt aprisse tutti i file e me li
facesse vedere nella finestra terminale via via che gli arrivavano, ma
non so come far sì che vengano salvati in un unico file..
Facendo qualcosa del tipo
find . ! -name ".*" -type f -exec rtf2txt {} \; | pico pippo.txt 
mi apre un documento nuovo e mi copia tutto l'output di rtf2txt, ma
poi non mi dà la possibilità di salvare il file di testo.
Qualcuno saprebbe come aiutarmi, in attesa del fine settimana, quando
andrò a cercare un libro che mi spieghi per benino la shell?
Grazie a tutti

 
fai cosi:
find . ! -name ".*" -type f -exec rtf2txt {} \; > nomefile.txt
Per il discorso del pescatore, se fai seguire a un comando " > nomefile 
" l'output del comando viene scritto sul file; eventuali messaggi di 
errore apparirebbero su schermo.
Il meccanismo e' questo: un programma che si usa da console ha tre 
flussi di caratteri:
- stdin: quello che legge
- stdout: quello che sputa fuori
- stderr: messaggi di errore.
Se fai
	ls > pippo.txt
redirigi lo stdout su pippo.txt, ossia ti ritroverai un file pippo.txt 
contenente l'output del comando ls.
Se tu facessi
	ls 2> errori.txt
redirigeresti lo stderr su errori.txt, ti ritroveresti un file 
errori.txt contenente gli errori riscontrati da ls durante la sua 
esecuzione (se lavori da console stdin e stderr sembrano la stessa cosa, 
ma in realta' non lo sono e tenerli separati puo' tornare utile).
Con
	ls &> pippo.txt
redirigi in una volta sola stdout e stderr su pippo.txt.
Quando usi una pipe (comando1 | comando2) fai si che lo stdout di 
comando1 diventi lo stdin di comando 2.
Il meccanismo e' abbastanza semplice, se hai dubbi/perplessita' dai 
un'occhiata qui:
http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html#toc1

 ls 2>
Occhio che non tutti (me compreso) usano BASH.
-- 
Ve lo meritate Gil Amelio!

 
Hai ragione. Ci sono talmente abituato da darla per scontata..

 find . ! -name ".*" -type f -exec rtf2txt {} \; > nomefile.txt
Altra cosa: credo che così converta ciascun file RTF e poi lo salvi su
nomefile.txt, sovrascrivendolo ogni volta, così alla fine si troverebbe
dentro nomefile.txt solo l'ultimo file convertito.
Io farei così:
rm nomefile.txt; find . ! -name ".*" -type f -exec rtf2txt {} \; >>
nomefile.txt
(tutto su un'unica riga)
Se poi lo deve usare spesso, un bell'alias ci sta tutto... :-)


 Io farei così:
Ho appena provato, sembra funzionare. Occorre pero' aggiungere al find 
un -name *.rtf, perche' altrimenti si finirebbe in un loop (passerebbe 
rtf2txt sullo stesso nomefile.txt), ci ho pensato solo ora.
find . ! -name ".*" -name "*.rtf" -type f -exec rtf2txt {} \; > nomefile.txt

 find . ! -name ".*" -name "*.rtf" -type f -exec rtf2txt {} \; > nomefile.txt
Grazie davvero... se vuoi una copia del volume fammi sapere... te lo
spedirò davvero volentieri, anche se non credo che un compendio di leggi
sia una delle cose più interessanti del mondo.... :-)
a buon rendere 
Tirante
-- 
- Oggi non vengo a mensa.
- Oicchè tussèi? Astemia di'mmangiare?
tirante
http://informaticaemotiva.splinder.it

 dentro nomefile.txt solo l'ultimo file convertito.
No perche' il redirect lo fa dopo l'argomento di exec quindi redirige
tutto l'output di find e non di ogni singola istanza di rtf2txt
per quello doveva fare -exec rtf2txt {} >> nomefile.txt \;
Ciaps!

 Occhio che non tutti (me compreso) usano BASH.
Se tu usi una shell derivata dalle venerabili sh o csh la cosa funziona.
Il 2 indica il descrittore 2 dei file del processo che sono sempre
0 stdin
1 stdout
2 stderr
perche' vengono creati sempre cosi` dal sistema operativo, e dato che
OS/X ha adottato il flavour BSD Unix sopra il microkernel si comporta
da Unix.
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico e fancazzista 
\/

 nomefile.txt, sovrascrivendolo ogni volta
Nope, la redirezione avviene a livello di find e non di rtf2txt.
Find lancia rtf2txt ma quando lo lancia gli passa i suoi descrittori
di stdin, stdout e stderr.
Quindi l'output di rtf2txt finisce nell'output di find e questo
viene rediretto sul file nomefile.txt
