Pagina 1 di 2
Visualizzare data di ultima modifica
Inviato: dom 28 dic 2008, 21:32
da anycolouryoulike
C'è un modo per visualizzarla in formato %Y%m%d del tipo:
Grazie
Re: Visualizzare data di ultima modifica
Inviato: lun 29 dic 2008, 0:17
da slux
Un pò contorto, ma funziona. Se c'è di meglio non lo so.
Re: Visualizzare data di ultima modifica
Inviato: lun 29 dic 2008, 1:28
da Dani
Si puo' usare anche stat:
o magari farsi qualcosa appositamente da mettere in /usr/local
Codice: Seleziona tutto
#define _BSD_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <time.h>
#include <errno.h>
int main (int argc, char *argv[])
{
struct stat st;
struct tm *time;
if (argc < 2)
{
printf ("Usage: %s [files]\n", *argv);
exit (1);
}
++argv;
do {
if (lstat (*argv, &st))
printf ("%s: %s\n", *argv, strerror (errno));
else
{
time = gmtime (&st.st_mtime);
printf ("%d%.2d%.2d\n", time->tm_year + 1900, time->tm_mon + 1, time->tm_mday);
}
} while (*++argv);
return 0;
}
Re: Visualizzare data di ultima modifica
Inviato: lun 29 dic 2008, 9:31
da raffaele181188
Ma non si era detto in un thread di qualche giorno fa che è possibile visualizzare il timestamp DELL'ULTIMO ACCESSO, ma non quello dell'ultima modifica? Mi sembrava di aver capito così... Anche perchè ci sono -atime e -ctime, ma non mi pare di aver trovato -mtime. Credevo fosse una limitazione di ext3, o magari di qualche comando come find o ls... Se è possibile visualizzare la data dell'ultima modifica (non dell'ultimo accesso, eh) vi prego di postare come, perchè mi servirebbe per un semplice script bash. Grazie
Re: Visualizzare data di ultima modifica
Inviato: lun 29 dic 2008, 10:16
da Mario Vanoni
anycolouryoulike ha scritto:C'è un modo per visualizzarla in formato %Y%m%d del tipo:
Grazie
Con GNU ls(1):
ls -l --time-style=+%Y%m%d file_name | awk '{print $6}'
Re: Visualizzare data di ultima modifica
Inviato: lun 29 dic 2008, 19:05
da slux
Con GNU ls(1):
ls -l --time-style=+%Y%m%d file_name | awk '{print $6}'
Molto più elegante,senza dubbio

Re: Visualizzare data di ultima modifica
Inviato: lun 29 dic 2008, 19:53
da anycolouryoulike
Credo che userò il metodo di Mario Vanoni, ma studierò anche quel codice.
Grazie a tutti!
Re: Visualizzare data di ultima modifica
Inviato: lun 29 dic 2008, 20:09
da Mario Vanoni
Alternativa:
ls -l --time-style=+%Y%m%d file_name | cut -d ' ' -f 6
ma ricorda che non e` portabile su U*X senza GNU ls(1)!
Re: Visualizzare data di ultima modifica
Inviato: lun 29 dic 2008, 21:49
da sya54M
raffaele181188 ha scritto:Ma non si era detto in un thread di qualche giorno fa che è possibile visualizzare il timestamp DELL'ULTIMO ACCESSO, ma non quello dell'ultima modifica? Mi sembrava di aver capito così... Anche perchè ci sono -atime e -ctime, ma non mi pare di aver trovato -mtime. Credevo fosse una limitazione di ext3, o magari di qualche comando come find o ls... Se è possibile visualizzare la data dell'ultima modifica (non dell'ultimo accesso, eh) vi prego di postare come, perchè mi servirebbe per un semplice script bash. Grazie
se è la stessa discussione che ricordo io si parlava della data di creazione che infatti non si può conoscere
Re: Visualizzare data di ultima modifica
Inviato: mar 30 dic 2008, 11:10
da conraid
Io in uno script ho usato questo metodo
Codice: Seleziona tutto
DATAFILE=$(date --date="$(stat -c %y $NOMEFILE)" +%Y%m%d)
è più veloce dei comandi con ls (che prima usavo) in pipe sia con cut sia con awk
Se devi farlo per tanti file conta, altrimenti meglio l'altro metodo in quanto più portabile, questa sfrutta una caratteristica della bash di annidare i comandi esterni, cioè fare con $(comando) quel che normalmente si fa con `comando`.
`comando `comando2`` non si può fare
Re: Visualizzare data di ultima modifica
Inviato: mar 30 dic 2008, 22:27
da Mario Vanoni
Directory con 8200 files *.c
time ls -l --time-style=+%Y%m%d file_name | awk '{print $6}'
0m0.128s
$(date --date="$(stat -c %y /directory/*.c)" +%Y%m%d)
arg list too long
mettendolo sia in un
ls /directory/*.c | while read file
che in un
for file in /directory/*.c
time dice 0m22...24, secondi !!!
PS La versione con cut non funziona
se il numero di bytes dei files sono diversi,
cut -d ' ' non capisce 1 o piu` spazi, awk si!
Re: Visualizzare data di ultima modifica
Inviato: mer 31 dic 2008, 11:00
da conraid
Mario Vanoni ha scritto:Directory con 8200 files *.c
E' inutile paragonare fagioli con mele, sono cose diverse che mangi in costesti diversi
Re: Visualizzare data di ultima modifica
Inviato: mer 31 dic 2008, 11:40
da Mario Vanoni
conraid ha scritto:Mario Vanoni ha scritto:Directory con 8200 files *.c
E' inutile paragonare fagioli con mele, sono cose diverse che mangi in contesti diversi
Directory con 15 files *.c
ls + awk = 0m0.008s
for + bash = 0m0.047s
Re: Visualizzare data di ultima modifica
Inviato: mer 31 dic 2008, 11:44
da conraid
Mario Vanoni ha scritto:conraid ha scritto:Mario Vanoni ha scritto:Directory con 8200 files *.c
E' inutile paragonare fagioli con mele, sono cose diverse che mangi in contesti diversi
Directory con 15 files *.c
ls + awk = 0m0.008s
for + bash = 0m0.047s
continui a paragonare cose diverse da fare in contesti diversi.
se usi for per processari più file ed assegnare la data ad una variabile (altrimenti il tutto non ha senso, e non ha senso nemmeno che usi quel comando per fare le prove), allora la stessa cosa va fatta anche con ls
altrimenti sono "cose diverse in contesti diversi"
E "for" l'hai usato tu, io ho detto altro su un altro contesto
Re: Visualizzare data di ultima modifica
Inviato: mer 31 dic 2008, 15:00
da Mario Vanoni
conraid ha scritto:Mario Vanoni ha scritto:
Directory con 15 files *.c
ls + awk = 0m0.008s
for + bash = 0m0.047s
continui a paragonare cose diverse da fare in contesti diversi.
se usi for per processari più file ed assegnare la data ad una variabile (altrimenti il tutto non ha senso, e non ha senso nemmeno che usi quel comando per fare le prove), allora la stessa cosa va fatta anche con ls
altrimenti sono "cose diverse in contesti diversi"
E "for" l'hai usato tu, io ho detto altro su un altro contesto
Corrado, per favore spiegati meglio.
La domanda di anycolouryoulike 28.12.2008 21:32:
voleva YYYYMMDD per ogni file.
Il tuo post 30.12.2008 11:10 dava una soluzione in uno script per un file,
se sono di piu`, non rimane che un for o while.
time ls -l --time-style=+%Y%m%d un_file_name | awk '{print $6}'
0m0.002s
time echo "$(date --date="$(stat -c %y un_file_name" +%Y%m%d)"
0m0.002s
time /bin/echo "$(date --date="$(stat -c %y un_file_name" +%Y%m%d)"
0m0.010s
Quale criterio usi per giudicare la velocita`?