Portál AbcLinuxu, 30. dubna 2024 06:47


Dotaz: find a dny v mesici

11.8.2007 15:10 dik
find a dny v mesici
Přečteno: 305×
Odpovědět | Admin
Ahoj, chci vyhledat stare soubory pomoci findu a parametru -mtime. Jak muzu nejrychleji zjistit spravnou hodnotu pro mtime ,kdyz napr: budu chtit vyhledat vsechny soubory ,ktere vznikly pred 4 lety v listopadu - chci tedy zjistit pocet dni k dnesku od 1 a posledniho listopadu 2003. Nejak pomoci date ? Diky za radu
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 11.8.2007 20:03 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: find a dny v mesici
Odpovědět | | Sbalit | Link | Blokovat | Admin
No jak tak koukam do manu findu, tak porovnávat přímo s datem neumí, ale umí vypsat mtime a jméno souboru, takže bych to udělal třeba takto:
find . -printf '%Y%m%d%H%M%S\0%p\n' \
| awk -F '\0' '$1 < datum {print $2}' \
| xargs echo
kde místo 'datum' napíšeš tebou požadované datum v podobě YYYYMMDDhhmmss (tedy rok, měsíc, den, hodina, minuta, sekunda bez jakýhkoliv oddělovačů) a místo echo napíšeš příkaz, který chceš provédst. Jména souborů nesmí obsahovat znak \0 a \n, což by nemělo nijak vadit.
Hello world ! Segmentation fault (core dumped)
11.8.2007 21:13 kirpike | skóre: 8 | Plzeň
Rozbalit Rozbalit vše Re: find a dny v mesici
Takhle radši ne, je to poněkud neefektivní.

Já bych to udělal tak, že si pomocí touch udělám pomocný soubor a použiju -newer (pro 1.11.2006 00:00):
touch 1101000006 /tmp/znacka
find . -newer /tmp/znacka
11.8.2007 21:20 kirpike | skóre: 8 | Plzeň
Rozbalit Rozbalit vše Re: find a dny v mesici
Ještě jednou jsem si přečetl původní zadání, takže celé řešení:
touch 1101000003 /tmp/znacka_od
touch 1201000003 /tmp/znacka_do
find . -newer /tmp/znacka_od ! -newer /tmp/znacka_do
12.8.2007 15:55 dik
Rozbalit Rozbalit vše Re: find a dny v mesici
...Vas postup vypada zajimave. Diky za nej. Jeste me napada otazka: Jak prikazu date rici - posledni den v mesici? Nepamatuji si totiz kolik ma ktery mesic dni... dik
Josef Kufner avatar 12.8.2007 17:08 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: find a dny v mesici
K tomuhle je dobré používat timestamp, tedy počet sekund od 1.1.1970. Pak stačí vzít prvního následujícího měsíce a odečíst 24 hodin. Pokud chceš jen kontrolovat, zda ten soubor byl vytvořen v ten měsíc, je zbytečné se se dny zatěžovat a můžeš je uříznout úplně, takže použiješ jen '%Y%m' a budeš mít šesticiferné číslo.
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.