Newsgroup: it.comp.os.linux.iniziare
Titolo: elenchi su una sola linea

avendo un elenco di questo tipo:
1.pdf
2.pdf
3.pdf
4.pdf
5.pdf
6.pdf
7.pdf
8.pdf
9.pdf
10.pdf
vorrei portarlo su una sola riga, separando ogni nome file, con uno 
spazio :
1.pdf 2.pdf 3.pdf 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf
dovrei eliminare le interruzioni di linea o sbaglio? non mi ricordo come 
si faceva. ls può farlo direttamente mentre elenca il contenuto di una 
directory?
-- 
Puppy Linux wiki:  
http://puppylover.netsons.org/dokupuppy
Puppy Linux Forum: 
http://puppylinux.ilbello.com
Windows me genuit, Ubuntu rapuere / tenet nunc Puppy Linux...

 directory?
  Fai con echo:
[alessandro@castrum ~ 0 ]$ ls ??.pdf
00.pdf  02.pdf  04.pdf  06.pdf  08.pdf  10.pdf
01.pdf  03.pdf  05.pdf  07.pdf  09.pdf
[alessandro@castrum ~ 0 ]$ echo ??.pdf
00.pdf 01.pdf 02.pdf 03.pdf 04.pdf 05.pdf 06.pdf 07.pdf 08.pdf 09.pdf 10.pdf
  Ciao,
-- 
Alessandro Selli 
http://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.
Chiave PGP/GPG: EC885A8B

 directory?
beh si, basta dare ls senza altri parametri :)

 beh si, basta dare ls senza altri parametri :)
  No, non va bene.  Questo è un comportamento altamente inaffidabile,
perché la sua riuscita dipende dalla larghezza del terminale, dal numero
dei file e della massima lunghezza dei file su cui si opera.  Basta poi
redirigere l'output di ls verso qualsiasi altra cosa che non il terminale
perché il comando, non potendo più sapere quanto è largo il terminale che
ha a disposizione, allinei automaticamente ogni file su un'unica colonna:
[alessandro@castrum ~ 0 ]$ ls ??.pdf
00.pdf  02.pdf  04.pdf  06.pdf  08.pdf  10.pdf
01.pdf  03.pdf  05.pdf  07.pdf  09.pdf # Due colonne, non una!
[alessandro@castrum ~ 0 ]$ mknod pipa p
[tecnico@kanthaka ~ 0 ]$ ls ??.pdf > pipa &
[1] 8558
[alessandro@castrum ~ 0 ]$ cat pipa
00.pdf
01.pdf
02.pdf
03.pdf
04.pdf
05.pdf
06.pdf
07.pdf
08.pdf
09.pdf
10.pdf
[1]+  Done                    ls --color=auto ??.pdf > pipa
[alessandro@castrum ~ 0 ]$


 01.pdf  03.pdf  05.pdf  07.pdf  09.pdf # Due colonne, non una!
  Scusate, due /righe/, non colonne.


 beh si, basta dare ls senza altri parametri :)
  No, non va bene.  Questo è un comportamento altamente inaffidabile,
perché la sua riuscita dipende dalla larghezza del terminale, dal numero
dei file e della massima lunghezza dei file su cui si opera.  Basta poi
redirigere l'output di ls verso qualsiasi altra cosa che non il terminale
perché il comando, non potendo più sapere quanto è largo il terminale che
ha a disposizione, allinei automaticamente ogni file su un'unica colonna:
[alessandro@castrum ~ 0 ]$ ls ??.pdf
00.pdf  02.pdf  04.pdf  06.pdf  08.pdf  10.pdf
01.pdf  03.pdf  05.pdf  07.pdf  09.pdf # Due righe, non una!
[alessandro@castrum ~ 0 ]$ mknod pipa p
[alessandro@castrum ~ 0 ]$ ls ??.pdf > pipa &
[1] 8558
[alessandro@castrum ~ 0 ]$ cat pipa
00.pdf
01.pdf
02.pdf
03.pdf
04.pdf
05.pdf
06.pdf
07.pdf
08.pdf
09.pdf
10.pdf
[1]+  Done                    ls --color=auto ??.pdf > pipa
[alessandro@castrum ~ 0 ]$
  In teoria, il cat dalla pipe avrebbe dovuto restituire lo stesso output
di ls, ma invece no: ls da solo, in questo caso, ha fornito due righe di
output, cat pipa invece undici righe, una per ciascun file.


 in un file?
[...]
sono 1049 file singoli pdf (ogni pagina un file) che devo riunire nel loro 
giusto ordine sequenziale (1,2,3,....1049). pensavo di aver risolto 
mettendo tutti questi pdf in una cartella e dando:
pdftk *.pdf cat output out.pdf
invece pdftk così non ripetta la sequenza delle pagine e mi mette la 
pagina 1000 dove dovrebbe essere la 10 e così via. allora avevo pensato di 
listare nel giusto ordine, tutti i pdf e poi fornirlo a pdftk per 
farglieli assemblare correttamente, ma
anche ls mi dà un elenco sballato
01.pdf
02.pdf
03.pdf
04.pdf
05.pdf
06.pdf
07.pdf
08.pdf
09.pdf
1000.pdf
1001.pdf
1002.pdf
1003.pdf
per fortuna, con sort e l'opzione -g (ordina secondo il valore numerico)
ls | sort -g >elenco.txt
01.pdf
02.pdf
03.pdf
04.pdf
05.pdf
06.pdf
07.pdf
08.pdf
09.pdf
10.pdf
11.pdf
12.pdf
13.pdf
ottengo quello che voglio ottenere
ora, per averli su di un'unica linea, dovrei usare
sed -e :a -e '$!N;s/\n/ /;ta' elenco.txt
per assegnare lo spazio forse c'è bisogno di un carattere speciale?
ma se una nuova linea è \n
perché se attivo le espressioni regolari in geany, non mi trova nessuna 
newline?


 02.pdf 03.pdf 04.pdf 05.pdf 06.pdf 07.pdf 08.pdf 09.pdf 10.pdf
[...]
ho infatti risolto così, alla fine
ls ??.pdf
echo ??.pdf
per i file da 01 a 99
ls ???.pdf 
echo ???.pdf
per i file da 100 a 999
ls ????
echo ????.pdf
per i file da 1000 a 1049
e ognuna delle tre volte, ho dato il risultato di echo come input del 
comando
pdftk file1,file2,file3,ecc... cat output out.pdf
così da creare tre file pdf out.pdf,out1.pdf,out2.pdf e quindi riunirli 
nel tanto sospirato file finale, nel loro giusto ordine
chissà se c'era un modo per combinare i vari comandi invece di darli più 
volte in successione


 1003.pdf
l'elenco non è "sballato", è, anzi, lessicograficalmente corretto :)
senonché gli umani non sono lessicografici...
cfr: 
http://www.codinghorror.com/blog/archives/001018.html
anche per questo m'ero scritto un programmino idiota per sistemarmi i numeri
nei file :)
http://unusefulscripts.googlecode.com/svn/trunk/SistemaNumeri.py
prova a fare `SistemaNumeri.py *pdf; ls *pdf` e dimmi che vedi :^)
-- 
By ZeD

 prova a fare `SistemaNumeri.py *pdf; ls *pdf` e dimmi che vedi :^)
[...]
quei 1049 file sul groppone erano un incubo. li ho cancellati dopo aver 
assemblato il pdf. rifarò la prova in futuro, ma cosa avrei dovuto vedere?


 assemblato il pdf. rifarò la prova in futuro, ma cosa avrei dovuto vedere?
niente di che, solo che erano ordinati :)
(il compito di quel programma è fare il padding dei numeri nei nomi dei file
per rendere l'ordinamento alfabetico uguale a quello "naturale")
-- 
By ZeD

 file per rendere l'ordinamento alfabetico uguale a quello "naturale")
[...]
quindi mi evitava tutti quei passaggi intermedi. lo userò prossimamente 
allora, credo


 rifarò la prova in futuro, ma cosa avrei dovuto vedere?
  "Cose che voi umani non potete neanche immaginare!"  (cit)
:-)
  Fa questo:
[alessandro@castrum tmp ]$ CONTA=0 ; while test $CONTA -le 10 ; do touch
"$CONTA.pdf" ; CONTA=$(($CONTA+1)) ; done
[alessandro@castrum tmp ]$ ls *.pdf
0.pdf  10.pdf  1.pdf  2.pdf  3.pdf  4.pdf  5.pdf  6.pdf  7.pdf  8.pdf  9.pdf
[alessandro@castrum tmp ]$ SistemaNumeri.py *.pdf
Warning: `10.pdf è già usato!'
[alessandro@castrum tmp ]$ ls *.pdf
00.pdf  02.pdf  04.pdf  06.pdf  08.pdf  10.pdf
01.pdf  03.pdf  05.pdf  07.pdf  09.pdf
  Ho al massimo da obiettare all'uso del pitone per fare il lavoretto, ma
ad ognuno gli strumenti che sa usare meglio, certamente fa il suo lavoro!  :-)


 ...
Ed ora gli altri problemi:
- Hai oltre mille file; probabilmente saturi lo spazio di ambiente.
  Devi ricorrere ad xargs
- pdftk non ha una sintassi standard
- Devi ricorrere a dei trucchetti tipo:
  ... | xargs -S 100 | xargs - I '{}' pdftk '{}' cat output out.pdf
- Invocando più volte pdftk sovrascrivi il file di output
Ti lascio a pensare come risolvere queste piccolezze :-(

 :-)
beh, diciamo che, visto che c'ero, l'ho potenziato per le mie esigenze :p
-- 
By ZeD