PowerShell: Belirli Dize İçermeyen Dosyalar Nasıl Bulunur?


Belirli bir klasörde bulunan ve dosyanın herhangi bir satırında belirli bir dize içermeyen tüm dosyaları bulmak için PowerShell'de aşağıdaki sözdizimini kullanabilirsiniz:

Get-ChildItem | Where-Object { !($_ | Select-String "Mavs") } | Select Name

Bu özel örnek, geçerli dizindeki, dosyanın herhangi bir satırında "Mavs" dizesini içermeyen her dosyanın dosya adlarını döndürecektir.

Çeşitli komutların yaptığı şey:

  • Get-ChildItem: Geçerli dizindeki her dosyayı alır
  • Nerede-Nesne: Dosyaları bazı koşullara göre filtreler
  • !($_ | Select-String “Mavs”): Bir dosyayı yalnızca herhangi bir satırda “Mavs” dizesini içermiyorsa seçer
  • Ad Seçin: Yalnızca dosya adını döndürür

Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.

Örnek: PowerShell'de Belirli Bir Dize İçermeyen Tüm Dosyaları Bul

Geçerli dizinimizin aşağıdaki üç metin dosyasını içerdiğini varsayalım:

  • teams1.txt
  • teams2.txt
  • teams3.txt

Bu dosyaların her birinin içeriğini görüntülemek için Get-Content cmdlet'ini kullanabiliriz:

Dosyaların her biri çeşitli basketbol takımı isimleri hakkında bilgi içerir.

Dosyanın herhangi bir satırında “Mavs” dizesini içermeyen tüm dosyaları bulmak istediğimizi varsayalım.

Bunu yapmak için aşağıdaki sözdizimini kullanabiliriz:

Get-ChildItem | Where-Object { !($_ | Select-String "Mavs") } | Select Name

Aşağıdaki ekran görüntüsü bu sözdiziminin pratikte nasıl kullanılacağını göstermektedir:

Bu, aşağıdaki dosyaları döndürür:

  • teams2.txt
  • teams3.txt

Bu bize “Mavs” dizisinin bu dosyaların hiçbirinde bulunmadığını söyler.

"Mavs" ifadesini kendi dosyalarınızda aramak istediğiniz başka bir dizeyle değiştirmekten çekinmeyin.

Not: Yalnızca dosya adları yerine dosyaların tam yolunu döndürmek için Ad Seç seçeneğini Tam Ad Seç ile değiştirebilirsiniz.

İlgili makaleler