[RISOLTO] Re: Come isolare il timestamp di un file? [ls, cut e num. campi/field]
* compact [250119, 23:03]: > In data venerdì 25 gennaio 2019 19:57:49, Ennio-Sr ha scritto: > > Ciao a tutti, > > > > sto cercando di isolare il timestamp di alcuni file per poter creare una > > 'condizione' ('if') in uno script di controllo. > > man stat > > stat -c %y file Oh, ecco un comando che non avevo presente e che si avvicina molto alla soluzione che cercavo. Intanto, da una rapida ricerca e alcuni tentativi, forse ho trovato proprio quello che cercavo: ---> $ ls -l C*wav | awk '{ print $8 }' 00:27 17:34 17:35 Grazie di nuovo a tutti gli intervenuti e ... alla prossima ;-) Ennio -- [Perche' usare Win$ozz (dico io) se ..."anche uno sciocco sa farlo. \\?// Fa' qualche cosa di cui non sei capace!" (diceva Henry Miller) ](°|°) [Why use Win$ozz (I say) if ... "even a fool can do that. )=( Do something you aren't good at!" (as Henry Miller used to say) ]
Re: Come isolare il timestamp di un file? [ls, cut e num. campi/field]
* Felipe Salvador [250119, 22:28]: > On Fri, Jan 25, 2019 at 07:57:49PM +0100, Ennio-Sr wrote: > > Ciao a tutti, > > > > sto cercando di isolare il timestamp di alcuni file per poter creare una > > 'condizione' ('if') in uno script di controllo. > > Non avendo mai usato 'awk' ho provato con ls -l e cut, ma il risultato > > sperato viene alterato dagli spazi dei singoli campi, non potendo > > prevedere il campo in cui si collocherà il timestamp del file che mi > > interessa. > > > > Una occhiata alle righe che seguono vale più di cento spiegazioni: > > > > - quote --- > > > > Script started on Fri 25 Jan 2019 18:38:14 CET > > mennio@mcmini-4_1-deb:~/prove$ l alias ls > > alias ls='ls -s -F -T 0 -b -H -1 -C --color=auto' > > [il risultato non cambia se uso il comando con la sola opzione -l] > > ennio@mcmini-4_1-deb:~/prove$ ls -l file? > > 52 -rw-r- 1 ennio ennio 52598 Sep 8 00:27 file1 > > 356 -rw-r- 1 ennio ennio 363137 Jan 25 17:34 file2 > > 4 -rw-r- 1 ennio ennio 2179 Jan 25 17:35 file3 > > ennio@mcmini-4_1-deb:~/prove$ ls -l file? | cut -d ' ' -f 1 > > > > 356 > > > > ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 2 > > 52 > > -rw-r- > > > > ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 3,4,5,6,7 > > [...] > > > > ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 9 > > Sep > > 17:34 > > > > ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 12 > > 00:27 > > > > 25 > > ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 13 > > file1 > > > > 17:35 > > ennio@mcmini-4_1-deb:~/prove$ Kexit > > > > Script done on Fri 25 Jan 2019 18:39:40 CET > > > > -- unquote -- > > > > Come si vede, la colonna del timestamp corrisponde a campi diversi > > secondo il numero di spazi di ogni riha prodotta da 'ls'. > > Penso che se potessi usare '\t' (TAB) come delimiter potrei ottenere il > > risultato desiderato, ma non mi pare sia possibile ;-( > > > > Avete suggerimenti su come potrei individuare quel dato, magari con awk? > > L'output di ls è delimitato da spazi, puoi rimpiazzarli con tr: > >ls -l | tr -s ' ' ',' | cut -d ',' -f 4,5,6,7,8 > >felipe,4096,apr,16,2018 >felipe,4096,apr,24,2018 >felipe,18432,giu,21,2018 >felipe,4096,mag,16,2017 >felipe,4096,giu,20,2016 >felipe,4096,nov,2,17:22 >felipe,4096,lug,7,2018 >felipe,97261,giu,10,2018 >felipe,101788,giu,10,2018 > Ti ringrazio, Felipe, ma la cosa non funziona: il problema è dovuto proprio agli spazi, che al variare del size dei file sono diversi e restano tali anche se vengono sostituiti dalla virgola. Guarda che succede: il comando : r !ls -l prove/file? | tr -s ' ' ',' | cut -d ',' -f 1-10 in un primo tempo ha dato come risultato: ,52,-rw-r-,1,ennio,ennio,52598,Sep,8,00:27,prove/file1 356,-rw-r-,1,ennio,ennio,363137,Jan,25,17:34,prove/file2 ,4,-rw-r-,1,ennio,ennio,2179,Jan,25,17:35,prove/file3 per cui, ripetendo il comando con l'estrazione del campo 9 ottenevo: 8 17:34 25 Ma, fatto strano, nei successivi tentativi il risultato è stato diverso: -rw-r-,1,ennio,ennio,52598,Sep,8,00:27,prove/file1 -rw-r-,1,ennio,ennio,363137,Jan,25,17:34,prove/file2 -rw-r-,1,ennio,ennio,2179,Jan,25,17:35,prove/file3 e poi: : r !ls -l prove/file? | tr -s ' ' ',' | cut -d ',' -f 8' 00:27 17:34 17:35 e ancora: : r !ls -l prove/file? | tr -s ' \t' ',' | cut -d ',' -f 8' 00:27 17:34 17:35 Concludo che il risultato mi sembra alquanto arbitrario e inadatto per basarci un controllo... Ciao e grazie, Ennio -- [Perche' usare Win$ozz (dico io) se ..."anche uno sciocco sa farlo. \\?// Fa' qualche cosa di cui non sei capace!" (diceva Henry Miller) ](°|°) [Why use Win$ozz (I say) if ... "even a fool can do that. )=( Do something you aren't good at!" (as Henry Miller used to say) ]
Re: Come isolare il timestamp di un file? [ls, cut e num. campi/field]
* cage [250119, 22:39]: > On Fri, Jan 25, 2019 at 07:57:49PM +0100, Ennio-Sr wrote: > > Ciao a tutti, > > Ciao! > > [...] > > > Come si vede, la colonna del timestamp corrisponde a campi diversi > > secondo il numero di spazi di ogni riha prodotta da 'ls'. > > Penso che se potessi usare '\t' (TAB) come delimiter potrei ottenere il > > risultato desiderato, ma non mi pare sia possibile ;-( > > Non riesco a centrare il problema comunque, per quel che ne so, cut(1) > usa il tabulatore come separatore di campo di default. > Sì, l'ho letto nel 'man ls' ma, se dò il comando semplicemente con ls -l ... | cut -f 8 (senza indicare il delimiter di default), mi scrive l'intera stringa, con tutti i campi, senza isolare il solo timestamp che mi interessa salvare in una variabile di memoria. > Ciao! > C. Ciao e grazie, Ennio -- [Perche' usare Win$ozz (dico io) se ..."anche uno sciocco sa farlo. \\?// Fa' qualche cosa di cui non sei capace!" (diceva Henry Miller) ](°|°) [Why use Win$ozz (I say) if ... "even a fool can do that. )=( Do something you aren't good at!" (as Henry Miller used to say) ]
Re: Come isolare il timestamp di un file? [ls, cut e num. campi/field]
In data venerdì 25 gennaio 2019 19:57:49, Ennio-Sr ha scritto: > Ciao a tutti, > > sto cercando di isolare il timestamp di alcuni file per poter creare una > 'condizione' ('if') in uno script di controllo. man stat stat -c %y file
Re: Come isolare il timestamp di un file? [ls, cut e num. campi/field]
On Fri, Jan 25, 2019 at 10:28:12PM +0100, Felipe Salvador wrote: > L'output di ls è delimitato da spazi, puoi rimpiazzarli con tr: > >ls -l | tr -s ' ' ',' | cut -d ',' -f 4,5,6,7,8 > >felipe,4096,apr,16,2018 >felipe,4096,apr,24,2018 >felipe,18432,giu,21,2018 >felipe,4096,mag,16,2017 >felipe,4096,giu,20,2016 >felipe,4096,nov,2,17:22 >felipe,4096,lug,7,2018 >felipe,97261,giu,10,2018 >felipe,101788,giu,10,2018 Fai attenzione, per effetto di '-s' in ls questo metodo produrrà un errore in corrispondenza della riga che indica il file più grande: 1,felipe,felipe,625,nov 1,felipe,felipe,625,nov 8,felipe,felipe,4096,gen 1,felipe,felipe,33453,set 1,felipe,felipe,1736068,set 1,felipe,felipe,139,gen 1,felipe,felipe,141,gen 1,felipe,felipe,5397088,giu felipe,felipe,9462689792,apr,28 <-- 3,felipe,felipe,4096,set Rimuovendo '-s' il problema non si pone: felipe,1736068,set,18,20:12 felipe,139,gen,21,18:13 felipe,141,gen,21,15:16 felipe,5397088,giu,10,2018 felipe,9462689792,apr,28,2018 felipe,4096,set,18,18:11 Saluti -- Felipe Salvador
Re: Come isolare il timestamp di un file? [ls, cut e num. campi/field]
On Fri, Jan 25, 2019 at 07:57:49PM +0100, Ennio-Sr wrote: > Ciao a tutti, Ciao! [...] > Come si vede, la colonna del timestamp corrisponde a campi diversi > secondo il numero di spazi di ogni riha prodotta da 'ls'. > Penso che se potessi usare '\t' (TAB) come delimiter potrei ottenere il > risultato desiderato, ma non mi pare sia possibile ;-( Non riesco a centrare il problema comunque, per quel che ne so, cut(1) usa il tabulatore come separatore di campo di default. Ciao! C.
Re: Come isolare il timestamp di un file? [ls, cut e num. campi/field]
On Fri, Jan 25, 2019 at 07:57:49PM +0100, Ennio-Sr wrote: > Ciao a tutti, > > sto cercando di isolare il timestamp di alcuni file per poter creare una > 'condizione' ('if') in uno script di controllo. > Non avendo mai usato 'awk' ho provato con ls -l e cut, ma il risultato > sperato viene alterato dagli spazi dei singoli campi, non potendo > prevedere il campo in cui si collocherà il timestamp del file che mi > interessa. > > Una occhiata alle righe che seguono vale più di cento spiegazioni: > > - quote --- > > Script started on Fri 25 Jan 2019 18:38:14 CET > mennio@mcmini-4_1-deb:~/prove$ l alias ls > alias ls='ls -s -F -T 0 -b -H -1 -C --color=auto' > [il risultato non cambia se uso il comando con la sola opzione -l] > ennio@mcmini-4_1-deb:~/prove$ ls -l file? > 52 -rw-r- 1 ennio ennio 52598 Sep 8 00:27 file1 > 356 -rw-r- 1 ennio ennio 363137 Jan 25 17:34 file2 > 4 -rw-r- 1 ennio ennio 2179 Jan 25 17:35 file3 > ennio@mcmini-4_1-deb:~/prove$ ls -l file? | cut -d ' ' -f 1 > > 356 > > ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 2 > 52 > -rw-r- > > ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 3,4,5,6,7 > [...] > > ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 9 > Sep > 17:34 > > ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 12 > 00:27 > > 25 > ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 13 > file1 > > 17:35 > ennio@mcmini-4_1-deb:~/prove$ Kexit > > Script done on Fri 25 Jan 2019 18:39:40 CET > > -- unquote -- > > Come si vede, la colonna del timestamp corrisponde a campi diversi > secondo il numero di spazi di ogni riha prodotta da 'ls'. > Penso che se potessi usare '\t' (TAB) come delimiter potrei ottenere il > risultato desiderato, ma non mi pare sia possibile ;-( > > Avete suggerimenti su come potrei individuare quel dato, magari con awk? L'output di ls è delimitato da spazi, puoi rimpiazzarli con tr: ls -l | tr -s ' ' ',' | cut -d ',' -f 4,5,6,7,8 felipe,4096,apr,16,2018 felipe,4096,apr,24,2018 felipe,18432,giu,21,2018 felipe,4096,mag,16,2017 felipe,4096,giu,20,2016 felipe,4096,nov,2,17:22 felipe,4096,lug,7,2018 felipe,97261,giu,10,2018 felipe,101788,giu,10,2018 > Grazie dell'attenzione, Ennio > -- > [Perche' usare Win$ozz (dico io) se ..."anche uno sciocco sa farlo. \\?// > Fa' qualche cosa di cui non sei capace!" (diceva Henry Miller) ](°|°) > [Why use Win$ozz (I say) if ... "even a fool can do that. )=( > Do something you aren't good at!" (as Henry Miller used to say) ] Ciao -- Felipe Salvador
Re: Come isolare il timestamp di un file? [ls, cut e num. campi/field]
* Gollum1 [250119, 21:33]: > Il 25 gennaio 2019 19:57:49 CET, Ennio-Sr ha scritto: > >Ciao a tutti, > > [big cut] > > e usare uno script in python? le librerie di python mi risulta che > considerino il timestamp come dato del file stesso. > > dipende da quello che poi ci devi fare > byez > -- Devo salvare il imestamp in una variabile da confrontare con un valore simile. Ma come si farebbe in python? Grazie, ciao, Ennio -- [Perche' usare Win$ozz (dico io) se ..."anche uno sciocco sa farlo. \\?// Fa' qualche cosa di cui non sei capace!" (diceva Henry Miller) ](°|°) [Why use Win$ozz (I say) if ... "even a fool can do that. )=( Do something you aren't good at!" (as Henry Miller used to say) ]
Re: Come isolare il timestamp di un file? [ls, cut e num. campi/field]
Il 25 gennaio 2019 19:57:49 CET, Ennio-Sr ha scritto: >Ciao a tutti, > >sto cercando di isolare il timestamp di alcuni file per poter creare >una >'condizione' ('if') in uno script di controllo. >Non avendo mai usato 'awk' ho provato con ls -l e cut, ma il risultato >sperato viene alterato dagli spazi dei singoli campi, non potendo >prevedere il campo in cui si collocherà il timestamp del file che mi >interessa. > >Una occhiata alle righe che seguono vale più di cento spiegazioni: > >- quote --- > >Script started on Fri 25 Jan 2019 18:38:14 CET >mennio@mcmini-4_1-deb:~/prove$ l alias ls >alias ls='ls -s -F -T 0 -b -H -1 -C --color=auto' >[il risultato non cambia se uso il comando con la sola opzione -l] >ennio@mcmini-4_1-deb:~/prove$ ls -l file? > 52 -rw-r- 1 ennio ennio 52598 Sep 8 00:27 file1 >356 -rw-r- 1 ennio ennio 363137 Jan 25 17:34 file2 > 4 -rw-r- 1 ennio ennio 2179 Jan 25 17:35 file3 >ennio@mcmini-4_1-deb:~/prove$ ls -l file? | cut -d ' ' -f 1 > >356 > >ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 2 >52 >-rw-r- > >ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 3,4,5,6,7 >[...] > >ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 9 >Sep >17:34 > >ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 12 >00:27 > >25 >ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 13 >file1 > >17:35 >ennio@mcmini-4_1-deb:~/prove$ Kexit > >Script done on Fri 25 Jan 2019 18:39:40 CET > >-- unquote -- > >Come si vede, la colonna del timestamp corrisponde a campi diversi >secondo il numero di spazi di ogni riha prodotta da 'ls'. >Penso che se potessi usare '\t' (TAB) come delimiter potrei ottenere il >risultato desiderato, ma non mi pare sia possibile ;-( > >Avete suggerimenti su come potrei individuare quel dato, magari con >awk? > >Grazie dell'attenzione, Ennio e usare uno script in python? le librerie di python mi risulta che considerino il timestamp come dato del file stesso. dipende da quello che poi ci devi fare byez -- gollum1 Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e gli errori, maledetto correttore automatico.
Come isolare il timestamp di un file? [ls, cut e num. campi/field]
Ciao a tutti, sto cercando di isolare il timestamp di alcuni file per poter creare una 'condizione' ('if') in uno script di controllo. Non avendo mai usato 'awk' ho provato con ls -l e cut, ma il risultato sperato viene alterato dagli spazi dei singoli campi, non potendo prevedere il campo in cui si collocherà il timestamp del file che mi interessa. Una occhiata alle righe che seguono vale più di cento spiegazioni: - quote --- Script started on Fri 25 Jan 2019 18:38:14 CET mennio@mcmini-4_1-deb:~/prove$ l alias ls alias ls='ls -s -F -T 0 -b -H -1 -C --color=auto' [il risultato non cambia se uso il comando con la sola opzione -l] ennio@mcmini-4_1-deb:~/prove$ ls -l file? 52 -rw-r- 1 ennio ennio 52598 Sep 8 00:27 file1 356 -rw-r- 1 ennio ennio 363137 Jan 25 17:34 file2 4 -rw-r- 1 ennio ennio 2179 Jan 25 17:35 file3 ennio@mcmini-4_1-deb:~/prove$ ls -l file? | cut -d ' ' -f 1 356 ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 2 52 -rw-r- ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 3,4,5,6,7 [...] ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 9 Sep 17:34 ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 12 00:27 25 ennio@mcmini-4_1-deb:~/prove$ Kls -l file? | cut -d ' ' -f 13 file1 17:35 ennio@mcmini-4_1-deb:~/prove$ Kexit Script done on Fri 25 Jan 2019 18:39:40 CET -- unquote -- Come si vede, la colonna del timestamp corrisponde a campi diversi secondo il numero di spazi di ogni riha prodotta da 'ls'. Penso che se potessi usare '\t' (TAB) come delimiter potrei ottenere il risultato desiderato, ma non mi pare sia possibile ;-( Avete suggerimenti su come potrei individuare quel dato, magari con awk? Grazie dell'attenzione, Ennio -- [Perche' usare Win$ozz (dico io) se ..."anche uno sciocco sa farlo. \\?// Fa' qualche cosa di cui non sei capace!" (diceva Henry Miller) ](°|°) [Why use Win$ozz (I say) if ... "even a fool can do that. )=( Do something you aren't good at!" (as Henry Miller used to say) ]