UNIX-tyyppisissä käyttöjärjestelmissä on tulee usein tarve etsiä jostain hakemistosta lähiaikoina (alla minuutin sisällä) muuttuneet tiedostot:
$ find /var/log/ -mmin -1 /var/log/debug /var/log/user.log /var/log/auth.log /var/log/syslog
Sama onnistuu myös Powershellissä ainakin kahdella tavalla, joista ensimmäinen on toiminnallisesti identtinen yllä olevan komennon kanssa:
PS C:UsersAdministratorDownloads> Get-ChildItem . -Recurse|Where-Object { $_.LastWriteTime -ge $(Get-Date).AddMinutes(-120) }|Select LastWriteTime, Name LastWriteTime Name ------------- ---- 6/18/2015 install.bat
Yllä oleva komento käy läpi koko hakemiston rekursiivisesti tarkistaen jokaisen tiedoston kohdalla viimeisimmän kirjoitusajan ja verraten sitä Date-objektiin, jossa nykyisestä kellonajasta on vähennetty 120 minuuttia. Toisin sanoen komento näyttää ne tiedostot tai hakemistot, joita on muokattu viimeisen 120 minuutin sisällä. Selkeyden vuoksi tiedostojen tiedoista näytetään selkeyden vuoksi vain nimi ja kirjoitusaika.
Yllä oleva komentorivi ei todennäköisesti toimi optimaalisesti, sillä Get-Date -komento ajetaan jokaiselle tiedostolle erikseen - olisi parempi määrittää se muuttujana ja käyttää muuttujaa Where-Object -testissä (kuten täällä).
Toinen tapa etsiä viimeisimmät muuttuneet tiedostot perustuu tiedostojen järjestämiseen niiden muutosajan perusteella:
PS C:Program FilesOpenVPNlog> Get-ChildItem|Sort-Object LastWriteTime -Descending|Select -First 2|Select Name, LastWriteTime Name LastWriteTime ---- ------------- community-stdout.log 6/18/2015 1:42:51 PM community-stderr.log 6/18/2015 1:42:51 PM
Tiedosto-objektit asetetaan muutosajan perusteella järjestykseen, jonka jälkeen luodusta listasta valitaan ensimmäiset kaksi. Tämä komento näyttää viimeksi muuttuneet tiedostot eikä ota kantaa siihen, onko muutokset tehty minuutti vai vuosi sitten.