* martedì 17 ottobre 2006, alle 12:50, Filippo Biondi scrive:
> /* in minima parte mi ricollego ad un post passato ieri */
>
> supponiamo che voglia passare ad un comando (es. cat) una serie di nomi di
> file che possono contenere spazi e glieli voglio dare uno dietro l'altro, non
> uno per uno (con xargs -0 sarebbe troppo semplice).
>
> Poniamo che abbia due file:
>
> fileUno.txt
> pippo Due.txt
>
> se scrivessi
>
> cat fileUno.txt pippo\ Due.txt
>
> non ci sarebbero problemi di sorta.
>
> Detto questo mi cerco un modo per ottenere via bash la suddetta stringa ed
> ottengo
>
> ls *.txt |sed -e 's/\ /\\ /g'|tr [:cntrl:] " "
>
> Pero' se scrivo
>
> cat `ls *.txt |sed -e 's/\ /\\ /g'|tr [:cntrl:] " "`
>
> sono dentro FileUno
> cat: pippo: Nessun file o directory
> cat: Due.txt: Nessun file o directory
>
> dove ovviamente la prima riga e' l'output di cat su fileUno.txt
Ai miei occhi, la soluzione "intelligente" e`:
rename 'y/ /_/' *.txt
Ma non e` quello che hai chiesto. Non sono un sed-guy, quindi non mi
metto nemmeno a guardare quello che hai fatto, e invece propongo un:
IFS=$'\n'
for a in `ls -1 *.txt`; do
cat "$a"
done
?
--
Maurizio - Tannoiser - Lemmo
Founder Member of ERLUG http://erlug.linux.it
-------------------------------------------------------------------------------
Giles: "Yes, she's lovely in a common, extremely well-proportioned way."
--Buffy the Vampire Slayer: Teacher's Pet
|