Powershell ile dosya arama
Powershell ile dosya arama. Powershell dosya arama özelliğini kullanabilmemiz için ihtiyacımız olan komut aslında çok basit Get-Childitem önemli olan bu komutu aradığımız dosyayı en hızlı şekilde bulması için nasıl konfigüre edebileceğimiz.
Powershell hakkında detaylı bilgiye sahip değilseniz buradan tüm faydalı powershell yazılarıma ulaşabilirsiniz.
Bir dosyayı bilgisayarımda kaydettim ama bulamıyorum. Bulmak için Windows PowerShell’i kullanmanın bir yolu var mı? Evet var ve windows explorerdan daha hızlı. Aslında shell den dosya arama powershell ile hayatımıza girmedi. Daha önceleri windows komut satırı aracından aşağıdaki komutla dosya arayabiliyorduk
Dir C:\*.* /s
fakat çok fazla işlevi yoktu. Powershell’de çok daha güçlü parametreler vererek tam aradığımız dosyaya çok kısa sürede ulaşmak mümkün.
Get-Childitem’i dosya ve dizinlerin bir listesini oldukça kolay bir şekilde göstermek için kullanabiliriz . Aşağıdaki örnek, C Sürücüsünün kökündeki tüm dosyaları listeler:
1 |
<span style="font-size: 14pt;"><strong>Get-Childitem –Path C:\</strong></span> |
Bir –Recurse parametresi eklersek alt dosyalarda da , erişimimiz olan her şeyi gösterebiliriz.
1 |
<span style="font-size: 14pt;"><strong>Get-Childitem –Path C:\ -Recurse</strong></span> |
Makale İçeriği
Powershell ile dosya arama
Peki neden PowerShell?
Arama için PowerShell kullanmak bizim gözden kaçırabileceğimiz her şeyi bize sunacaktır. Ama bu klasör yapısında, erişemediğim tüm dosyalar powershell aramasında bana hata olarak dönecektir hata olarak dönmesini istemiyorsam -ErrorAction parametresi belirlemeliyim.
Bu yüzden PowerShell’e, “Bana bu küçük hataları gösterme, sadece devam et” diyorum.
1 |
<strong><span style="font-size: 14pt;">Get-Childitem –Path C:\ -Recurse -ErrorAction SilentlyContinue</span></strong> |
Peki bunu bir arama aracı olarak nasıl kullanacağız? Get-Childitem ek parametreler içerir –Include ve –exclude. İşlevleri oldukça basit.
Include parametresi “aramasında sadece bu dosyaları bana göster” der ve -exclude ise bu dosyaları bana gösterme anlamına gelir.
Windows Temporary dosyası gizli bir klasör olduğu için, powershell bu bölümde normalde arama yapmaz. Eğer arayacağınız dosya temp altında olabilirse –force parametresini ekleyerek bu klasörleri de incelemesine izin verebilirsiniz..
1 |
<strong><span style="font-size: 14pt;">Get-Childitem –Path C:\ -Recurse –force -ErrorAction SilentlyContinue</span></strong> |
Artık bu komutu yalnızca erişebildiğim Word belgelerini veya aramak istediğim terimi koyduğum (Ali) göstermek için kullanabilirim.
1 |
<strong><span style="font-size: 14pt;">Get-Childitem –Path C:\ -Include *Aliortul* -Recurse -ErrorAction SilentlyContinue</span></strong> |
Bu komut ne yazık ki, her şeyi çeker, ne demek her şey. İçerisinde Ali geçen her klasör ve dosyayı ben klasörleri aramasını istemiyor sadece dosyaları aramasını istiyorsam -file parametresini ekleyerek bunu yapabilirim.
1 |
<strong><span style="font-size: 14pt;">Get-Childitem –Path C:\ -Include *Aliortul* -File -Recurse -ErrorAction SilentlyContinue</span></strong> |
Ayrıca -Exclude parametresini “Bana herhangi bir TMP, MP3 veya JPG dosyası gösterme:” demek için de kullanabilirim.
1 |
<strong><span style="font-size: 14pt;">Get-Childitem –Path C:\ -Include *Aliortul* -Exclude *.JPG,*.MP3,*.TMP -File -Recurse -ErrorAction SilentlyContinue</span></strong> |
Ve işte benim bilgisayarımdaki arama sonucu.
Powershell tarih aralığında arama
Farz edelim ki benim bilgisayarımda çok fazla dosya var istediğim dosyayı bu şekilde aramak çok uzun zaman alacak ve uzun yıllardır bu bilgisayarı kullanıyorum. Benim aradığım dosyayı daha hızlı bulmak için bir fikrim var bu dosyayı create ettiğim tarihi biliyorum tarih belirterek bu dosyayı arayabilir miyim? Yanıt yine evet. Örneğin powershell ile bir tarih aralığında dosyamızı aratacağız diyelim. Önce iki değişken atayarak başlangıç tarihi ve bitiş tarihini belirtiyorum. Başlangıç tarihine $tarihbasla bitiş tarihine ise $tarihbitir diyeceğim. ve Yıl -ay – gün olarak istediğim tarihi belirliyorum.
1 |
<strong><span style="font-size: 14pt;">$tarihbasla = Get-Date -Year 2022 -Month 01 -Day 06</span></strong> |
1 |
<strong><span style="font-size: 14pt;">$tarihbitir = Get-Date -Year 2022 -Month 03 -Day 06</span></strong> |
Tarih aralığımı da belirlediğime göre Artık yazmam gereken komut aşağıdaki gibi.
1 |
<strong><span style="font-size: 14pt;">Get-ChildItem -Path C:\ -Include "Aliortul" -File -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -ge $tarihbasla -and $_.LastWriteTime -le $tarihbitir}</span></strong> |
Powerhell dosya yolu (-Path) ile arama
Ya benim böyle şeylere ihtiyacım yok. Zaten dosyayı kaydettiğim yeri az çok biliyorum biliyorum, iki yerde olabilir, ama çok fazla dosya var. Gözle taramak yerine powershell hemen bulsun istiyorum var mı bir yolu? O en kolayı -Path parametresi ile yolu kendiniz belirleyebilirsiniz.
1 |
<strong><span style="font-size: 14pt;">Get-Childitem -Path C:\Users, D:\Ali -Include "Aliortul" -Recurse</span> </strong> |
Kaynak
2 thoughts on “Powershell ile dosya arama”
Bir yanıt yazın
Yorum yapabilmek için oturum açmalısınız.
Hocam Merhaba,
Youtubedeki videolarınızı takip severek ve ederek, son Server Manageri kurdum RSAT eklentileri ile birlikte, yanlız Local Server’im görünmüyor (DNS – server adını eklememe rağmen). Domain’im da yok, sadece kendi yerel PC’mi ana PC yapmak istiyorum. Bu arada, VM (herhangi bir sanal makina programı da kurmadım). Local serverin görünebilmesi için VM kurmam gerekiyor veya başka eksik şeyler mi var?
Desteğiniz ve geri dönüşünüz için şimdiden teşekkür ederim.
Saygılarımla,
[…] Powershell ile dosya silme komutu oldukça basit aşağıdaki komutla powershell ile dosya ve klasörleri silebilirsiniz. Öncelikle bu komutları sorunsuz çalışırabilmek için Powershell’i administrator olarak açmanız gerekiyor. […]