[Risolto] Script bash per incollare file

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
faustomr
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 840
Iscrizione: venerdì 28 marzo 2008, 13:20

[Risolto] Script bash per incollare file

Messaggio da faustomr »

Ciao a tutti,

devo creare uno script in bash che incolli N file del tipo fort.* . I file fort.* sono generati randomicamente, quindi ho qualcosa del tipo
fort.101
fort.29
fort.8721
...
Lo scopo è incollarli (con cat) in modo che la numerazione sia crescente:
cat fort.29 fort.101 fort.8721 ... > file.dat

I file da ordinare sono più di 700, quindi farlo a mano diventa proibitivo.

Qualcuno mi sa aiutare?

Grazie
Ultima modifica di faustomr il giovedì 14 agosto 2014, 16:00, modificato 1 volta in totale.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Script bash per incollare file

Messaggio da vaeVictis »

È un argomento già trattato. Hai fatto una ricerca?
Falla perché dovresti trovare tutto quello che ti serve :)
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Script bash per incollare file

Messaggio da UbuNuovo »

Io invece davo per scontato che cat ordinasse i file da solo (visto che il nome dei file è sempre lo stesso)! Buon per me!
Ho usato sort sfruttando il punto come separatore.

Codice: Seleziona tutto

cat $(ls dati/fort.* | sort -n -t. -k 2) > file.dat
È un modo sempice ma probabilmente ce ne sono di migliori (per esempio con find).
Salva l'Ucraina! 🇺🇦
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Script bash per incollare file

Messaggio da crap0101 »

basta usare l'opzione -V di sort o, ancora meglio dato che usi ls, la sua -v che fa la stessa roba.

Codice: Seleziona tutto

ls -1v fort.* | xargs cat >> OUT
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
faustomr
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 840
Iscrizione: venerdì 28 marzo 2008, 13:20

Re: Script bash per incollare file

Messaggio da faustomr »

Grazie mille. Sapevo di dover usare sort ma non sapevo come. Non avevo invece idea del -v di ls.
Grazie ancora :)
Avatar utente
jackynet92
Moderatore Globale
Moderatore Globale
Messaggi: 13413
Iscrizione: sabato 3 settembre 2011, 1:41
Desktop: Mate
Distribuzione: Ubuntu 16.04 64bit
Sesso: Maschile
Località: Torino

Re: Script bash per incollare file

Messaggio da jackynet92 »

Se ritieni risolto il problema metti [Risolto] al titolo del primo post
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto] Script bash per incollare file

Messaggio da UbuNuovo »

@crap: Avevo bisogno di una rilettura del manuale di ls; ne ha di metodi di ordinamento...

Codice: Seleziona tutto

8-) man ls | grep sort
       List information about the FILEs (the current directory by default).  Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
       -c     with -lt: sort by, and show, ctime (time of last modification of file status information) with -l: show ctime and sort by name otherwise: sort by ctime, newest first
       -f     do not sort, enable -aU, disable -ls --color
              augment with a --sort option, but any use of --sort=none (-U) disables grouping
              reverse order while sorting
       -S     sort by file size
       --sort=WORD
              sort by WORD instead of name: none -U, extension -X, size -S, time -t, version -v
              with -l, show time as WORD instead of modification time: atime -u, access -u, use -u, ctime -c, or status -c; use specified time as sort key if --sort=time
       -t     sort by modification time, newest first
       -u     with -lt: sort by, and show, access time with -l: show access time and sort by name otherwise: sort by access time
       -U     do not sort; list entries in directory order
       -v     natural sort of (version) numbers within text
       -X     sort alphabetically by entry extension
ls lo sottovaluto spesso!
Salva l'Ucraina! 🇺🇦
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [Risolto] Script bash per incollare file

Messaggio da vaeVictis »

@UbuNuovo
Non so se può interessarti, ma per fare le ricerche all'interno delle manpage (con la manpage visualizzata), puoi dare slash ( / ) e poi scrivere la parola che ti interessa (nel tuo caso "sort").
Dai invio e, se trova riscontri, puoi andare al successivo premendo "n" e al precedente premendo "p".
... per me fu una svolta.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto] Script bash per incollare file

Messaggio da UbuNuovo »

Grazie Vae, mi avevi già dato quella dritta ma sono abituato con grep, così vedo le varie occorrenze.
Salva l'Ucraina! 🇺🇦
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto] Script bash per incollare file

Messaggio da UbuNuovo »

Cavolo non mi funge! L'altra volta non mi ricordo che carattere dovevo aggiungere mi pare "[" ma da help mi dice come hai detto tu.
SEARCHING

/pattern * Search forward for (N-th) matching line.
?pattern * Search backward for (N-th) matching line.
n * Repeat previous search (for N-th occurrence).
N * Repeat previous search in reverse direction.
ESC-n * Repeat previous search, spanning files.
ESC-N * Repeat previous search, reverse dir. & spanning files.
ESC-u Undo (toggle) search highlighting.
&pattern * Display only matching lines
---------------------------------------------------
A search pattern may be preceded by one or more of:
^N or ! Search for NON-matching lines.
^E or * Search multiple files (pass thru END OF FILE).
^F or @ Start search at FIRST file (for /) or last file (for ?).
^K Highlight matches, but don't move (KEEP position).
^R Don't use REGULAR EXPRESSIONS.
Edit: Sono scemo! Dovevo cambiare l'impostazione del tastierino numerico.
Salva l'Ucraina! 🇺🇦
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 20 ospiti