Muistatko mitä tiedostoja käsittelit 5 viikkoa sitten ? Tai haluaisitko siirtää vaikkapa 6 kk vanhemmat tiedostot jonnekin ?
Kirjoittelin helppokäyttöisen "seulan" joka valitsee vain tietyn ikäiset tiedostot. Nimeksi tuli "FileAge" (mistä lienee tullut...). Paketoin sen ".deb" -paketiksi:
http://www.homelinuxpc.com/download/fileage_1.1-1_all.deb Tuo seula toimii joko yksin kun antaa polun josta tiedostoja etsitään tai sille voi myös putkittaa vaikka "find" ohjelmasta, lukee vakiosyötteestä jos polun kohdalle antaa "-" -merkin. Se osaa etsiä operaattoreilla >, <, <=, >=, =, == ja ajan voi antaa yksiköissä s, mi, h, d, w, mo, y.
Operaattori "=" olisi käyttökelvoton sellaisenaan liian tarkkana (aika lasketan sisäisesti aina sekunteina) joten tein asian toimimaan likimääräishaulla niin että:
= vastaa +-30 % tarkkuutta
== vastaa +- 10 % tarkkuutta
jolloin hakuhaarukka tuntui käyttökelpoiselta. Syntaksi:
fileage <polku> <'sääntö'> [ 'komento "$filename"' ]
Jos komento (eli 3. parametri) puuttuu niin tiedostojen nimet listataan. Kovat lainaukset säännön ympärillä ja komennon ympärillä ovat pakolliset. Sen lisäksi tuo "$filename" pitää olla pehmeissä lainauksissa eli tavallisissa lainausmerkeissä.
Käyttöesimerkkejä:
fileage /home/matti '> 2 days'
fileage /home/maija '= 5 weeks'
fileage /home/matti '>6 months' 'mv "$filename" /mnt/usbdisk/backup'
find . -maxdepth 1 -type f | fileage - '= 1 d'
Putkitettu syöte voi tulla mistä hyvänsä ohjelmasta jos se antaa polun tiedostonimen eteen, muuten haku ei ole mahdollista. "find" sopii hyvin, "ls" ei anna polkua mukaan jolloin se toimii vain kun ollaan kyseisessä hakemistossa.
Tuolle lienee käyttöä jos pitää iän perusteella käsitellä tiedostoja. Lisätietoja löytyy tavalliseen tapaan kun antaa asennuksen jälkeen päätteessä:
man fileage