Tiedostojen käsittelyä komentoriviltä Linuxissa

Artikkeleita ja esimerkkejä siitä, miten tiedostoja voi käsitellä komentoriviltä.

su 23.11.2025 3.27 | CS

Tiedostojen haku find-käskyllä

Käytän find-käskyä usein ohjelmoinnissa ja kaikenlaisessa tiedostojen käsittelyssä. Yleensä etsin sillä tiedostoja nimen tai nimen osan perusteella. Toinen tavanomainen käyttötapaus on se, että haluan katsoa, missä viimeksi muokatut tiedostot ovat, tai tarkistaa, mihin tiedostoihin olen tehnyt muutoksia tänään tai viimeisen 30 päivän aikana, jne.

Kaikkien tiedostojen listaus

Seuraava käsky listaa kaikki työhakemistossa ja sen alihakemistoissa olevat tiedostot:

find .

Tiedostojen haku nimen perusteella

Grep-komennolla voidaan suodattaa tekstiä niin, että jäljelle jää rivit, jotka sisältävät hakusanan. Putkimerkillä | voimme yhdistää find- ja grep-käskyt. Yhdistelmällä voimme tehdä esimerkiksi tiedostohaun.

Tämä käsky listaa työhakemistosta (alihakemistot mukaan lukien) tiedostot, joiden nimi sisältää merkkijonon "index". Haku ei ole merkkikokoherkkä. Se löytää esimerkiksi tiedostot "INDEX.html" ja "Index.Txt".

find . | grep -i index

Tiedostojen haku muokkausajan perusteella

Tämä komento listaa työhakemistosta (alihakemistot mukaan lukien) kaikki tiedostot, joita on muokattu viimeisen vuorokauden (viimeisen 24 tunnin) sisällä:

find . -mtime -1

Listaa tiedostot, joita muokattu viimeisen 3 vuorokauden sisällä:

find . -mtime -3

Listaa tiedostot, joiden muokkaushetkestä on kulunut vähintään 1 vuorokausi:

find . -mtime +0

Listaa tiedostot, joiden muokkaushetkestä on kulunut vähintään 4 vuorokautta:

find . -mtime +3

Lisätietojen tulostaminen

Parametrilla -printf voi tulostaa lisätietoja find-käskyn löytämistä tiedostoista. Seuraava käsky hakee viimeisen 7 vuorokauden aikana muokatut tiedostot sekä lisää tulosteeseen tarkan muokkausajan ja hakemistopolun.

find . -mtime -7 -printf "%T+ %h/%f\n"

Tässä esimerkissä muokkausaika tulostuu rivin alkuun muodossa vuosi-kuukausi-päivä jne., joten listan saa aikajärjestykseen putkittamalla tulosteen sort-komennolle:

find . -mtime -7 -printf "%T+ %h/%f\n" | sort

Tiedostojen haku muilla ehdoilla

Find-käskyä voi käyttää ainakin sadalla muullakin tavalla. Hakuehtona voi olla esimerkiksi ctime- tai atime-aika, tiedoston omistaja tai ryhmä, tiedoston koko tai tiedoston käyttöoikeudet. Ohjesivulta (man find) löytyy kattava ohje. Tähän halusin kirjoittaa erityisesti mtime-parametrista esimerkkejä, koska sen plus- ja miinus-parametrien tarkkoja merkityksiä on vaikea muistaa.

Muut operaatiot

Find-käskyllä voi myös käsitellä tiedostoja. Lisätietoja siitä on man-sivun osiossa "ACTIONS".

to 6.11.2025 20.09 | CS

Tiedostojen ja hakemistojen vertailu

Oletetaan, että meillä on tekstitiedosto v1.txt. Teemme siitä kopion, jonka nimeksi annamme v2.txt. Sitten muokkaamme jälkimmäistä tiedostoa. Jos haluamme tarkistaa, mitä muokkauksia on tehty, voimme selvittää sen diff-käskyllä. Se antaa listauksen siitä, mitä sanoja tai rivejä on lisätty, poistettu tai muutettu.

Esimerkki diff-käskyn käytöstä:

diff v1.txt v2.txt

Jos muutoksia on paljon, on usein hyödyllistä yhdistää diff ja less:

diff v1.txt v2.txt | less

Silloin lista muutoksista avautuu less-ohjelmaan, jolloin voimme nuoli ylös ja nuoli alas -näppäimillä selata listaa. less-ohjelmasta pääsee takaisin komentoriville näppäimellä q.

Kokonaisten hakemistojen vertailu:

diff -r hakemisto1 hakemisto2

Joskus haluamme vain lyhyen, tiedostotason listan hakemistojen eroista. Seuraava kertoo, mitä tiedostoja on lisätty, poistettu tai muutettu:

diff -qr hakemisto1 hakemisto2
Click anywhere to close