[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]



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


Reply to: