Řešení 1:
Je možné, že problém s časovým pásmem je červený sledě.
find . -mtime 7
by měl najít soubory, které jsou přesně sedm dní staré ("sedm" znamená mezi 7 000 a 7 999 dny, dát nebo vzít, a "staré" znamená "od poslední úpravy"). Pokud chcete soubory, které jsou starší než sedm dní, což soudě podle data prvního souboru (červen 2010) chcete, zkuste
find . -mtime +7
Souhlasím s vámi, že zdánlivé časové pásmo je zvláštní, ale myslím, že je to vysvětlitelné. man stat
je jasné, že time_t je uložen, jak říká Sean R níže. Co ls
dělá to, že to zobrazuje jako místní čas a je tak laskavé, že když tak učiní, vezme v úvahu místní zvyklosti na letní čas.
Můj systém je stejný:časy souborů, které náhodou spadají do března-října, jsou zobrazeny s časovým pásmem +0100, zatímco ty, které spadají do října-března, jsou zobrazeny s časovým pásmem +0000, ne proto, že je to uloženo v systému souborů, ale protože soubor časového pásma mému systému říká, že v červnu, když jsem se dotkl souboru, bych to udělal v době, o které jsem si myslel, že je 8 hodin ráno, a ne-bylo-7 hodin-kdyby-byla-zima. ls
je dost laskavé, když zobrazuje časy, které jsou náhodou v létě, ukázat je tak, jak by vypadaly v létě, to je vše.
Pokud v ls
najdete nějaká časová pásma výstup, který není letní ani zimní podle vašich místních zvyklostí, pak se mýlím – ale ve svém systému nemohu žádný najít.
Řešení 2:
S find -mtime funguje ve 24hodinových intervalech, takže
-mtime 0 or -mtime -1 mean today
-mtime 3 would mean 3 days old
-mtime +1 means greater than one day old
-mtime -7 means less than 7 days old
Řešení 3:
Abych trochu více vysvětlil jeho časovou zónu (diskuze "mtime" je řešena jinými komentáři)...
Datum a čas jsou uloženy v souborech jako sekundy od půlnoci 1. ledna 1970, UTC. To znamená, že s nimi není spojeno žádné časové pásmo. Programy pak použijí systémové nastavení časového pásma v /etc/timezone
, pokud není přepsáno proměnnou prostředí "TZ", k zobrazení tohoto času v místním časovém pásmu:
chats:/tmp$ touch foo
chats:/tmp$ ls -l foo
-rw-r--r-- 1 jafo jafo 0 Dec 1 06:14 foo
chats:/tmp$ TZ=GMT ls -l foo
-rw-r--r-- 1 jafo jafo 0 Dec 1 13:14 foo
chats:/tmp$
Všimněte si, že na posledním řádku je 13:14 a ve výstupu nad ním, kde používám své výchozí časové pásmo amerického horského času (GMT-0700), je 6:14. Rozdíl je v druhém "ls", kterým jsem nastavil proměnnou prostředí TZ na GMT.
Možná budete chtít použít "stat" k prozkoumání všech časů/dat spojených se soubory.