Uusimman tiedoston löytäminen

Toisinaan tulee vastaan tilanne, että haluaa nopeasti tehdä jotakin hakemiston uusimmalle tiedostolle. On esimerkiksi prosessi, joka tekee aina uuden lokitiedoston kun se käynnistetään. Tiedostothan voi laittaa aikajärjestykseen esimerkiksi ls -lasrt, ja sitten manuaalisesti kaivaa siitä se uusin tulokas. Tämä voidaan kuitenkin automatisoida aika näppärästi. Esittelen tässä aika näppärin aliaksen mitä itse käytän.

Näin se menee. Lisätään ~/.bashrc tiedostoon

alias latest='ls -cp -1 | grep -v /$ | head -1'

Komento palauttaa komento hakemistosta viimeiseksi muokatun tiedoston. Aliaksen voi lisätä vaikkapa ~/.bash_aliases-tiedostoon. ls -cp -1 komennossa -cp järjestää ctimen mukaan ja -1 sanoo että tulostetaan yksi tulos per rivi.

Komento grep -v /$ suodattaa tulosteesta pois ne rivit, jotka päättyvät /-merkkiin, eli hakemistot.

Jos hakemistossa on esimerkiksi tiedostot

jukka@jukka-XPS-13-9380:/tmp/test$ ls -la
total 44
drwxrwxr-x  3 jukka jukka  4096 kesä    6 00:15 .
drwxrwxrwt 49 root  root  28672 kesä    6 00:15 ..
drwxrwxr-x  2 jukka jukka  4096 kesä    6 00:13 foo
-rw-rw-r--  1 jukka jukka    13 touko  31 16:19 index.html
-rw-rw-r--  1 jukka jukka     0 kesä    6 00:15 toinen.html

Ensimmäisenä ls -cp -1 palauttaa

jukka@jukka-XPS-13-9380:/tmp/test$ ls -cp -1
toinen.html
foo/
index.html

Ja tästä sitten siis grep -v /$ palauttaa

jukka@jukka-XPS-13-9380:/tmp/test$ ls -cp -1 | grep -v /$
toinen.html
index.html

Lopuksi head -1 palauttaa ensimmäisen tiedoston nimen.

Käyttö

Käyttö esimerkiksi tilanteissa, joissa yhteen hakemistoon tulee lokitiedostoja jostakin prosessista (esimerkiksi varmuuskopiointi), ja haluat seurata tai aukaista uusimman:

tail -100f `latest`

tai vaikkapa

cat `latest`