[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Come isolare il timestamp di un file? [ls, cut e num. campi/field]



* Felipe Salvador <felipe.salvador@gmail.com> [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) ]


Reply to: