Listare la data di ultima modifica dei file in bash

Un pò di esperimenti che mostrano come listare i file presenti in una directory evidenziando fattori importanti come la data di ultima modifica.
Chiunque abbia a che fare con linux prima o poi fa uno script in bash. Di seguito elenco alcuni comandi che offrono informazioni importanti e "comode" nel senso che sono pronte per il riutilizzo all'interno di script.
Quando si vogliono processare esclusivamente le sotto-directory presenti in una directory (ci saranno almeno 2 milioni di modi per fare questa cosa … cmq) posso usare: la cosa comada in questo caso è che non vengono listate le directory "." e "..":
cd dir find * -type d -prune
questo è il risultato che ottengo:
ACER Acronis caldaie eurotrasporti vaio
allo stesso modo posso listare solamente i files:
find -H * -type f -prune
e ottengo qualcosa di questo tipo:
2v_lista_ultime_modifiche 3053_I.pdf 75_beton.odt 75_beton.odt.ods 8500.ppd ACER/PIC_0009.JPG ACER/PIC_0016.JPG ACER/PIC_0007.JPG ACER/PIC_0012.JPG ACER/PIC_0004.JPG Acronis/TrueImageServerEcho_d_it.i686
Posso sfruttare questo comando per ottenere la lista dei file e la data di ultima modifica:
#!/bin/bash
t=0
OFS=$IFS
IFS='
'
for file in $(find -H * -type f -prune);
do
if [ "$1" == "complete" ];
then
#files[$t]=$(date --iso-8601=seconds -r `echo $file|sed 's/ /\\ /g'`)"\t$file";
files[$t]=$(date +'%Y-%m-%d %H:%M:%S' -r `echo $file|sed 's/ /\\ /g'`)"\t$file";
else
files[$t]=$(date --rfc-3339='date' -r `echo $file|sed 's/ /\\ /g'`)"\t$file";
fi
t=$(( t + 1))
done
files_sorted=(
$(for ((i=0; i < "${#files[@]}"; i++));
do
echo ${files[$i]};
done | sort) )
for ((i=0; i < "${#files[@]}"; i++));
do
echo -e ${files[$i]};
done
questo è il risultato che ottengo se lo lancio senza parametro
./2v_lista_ultime_modifiche 2008-10-17 2v_lista_ultime_modifiche 2007-09-17 3053_I.pdf 2007-12-17 75_beton.odt 2007-12-06 75_beton.odt.ods 2007-06-15 8500.ppd 2007-12-14 ACER/PIC_0009.JPG 2007-12-14 ACER/PIC_0016.JPG 2007-12-14 ACER/PIC_0007.JPG 2007-12-14 ACER/PIC_0012.JPG 2007-12-14 ACER/PIC_0004.JPG 2008-05-12 Acronis/TrueImageServerEcho_d_it.i686
questo è il risultato che ottengo se lo lancio con il parametro complete che mostra la data aggiungendo l'ora
./2v_lista_ultime_modifiche complete 2008-10-17 17:12:57 2v_lista_ultime_modifiche 2007-09-17 11:55:37 3053_I.pdf 2007-12-17 18:09:09 75_beton.odt 2007-12-06 18:35:31 75_beton.odt.ods 2007-06-15 19:15:36 8500.ppd 2007-12-14 11:54:30 ACER/PIC_0009.JPG 2007-12-14 11:54:56 ACER/PIC_0016.JPG 2007-12-14 11:54:14 ACER/PIC_0007.JPG 2007-12-14 11:54:42 ACER/PIC_0012.JPG 2007-12-14 10:50:43 ACER/PIC_0004.JPG 2008-05-12 12:46:32 Acronis/TrueImageServerEcho_d_it.i686
- blog di dam
- 1690 letture

Invia nuovo commento