Tôi đang cố tìm tất cả các tệp không chứa chuỗi đã chọn. Tìm tệp có chứa rất dễ dàng:Tìm tệp không chứa chuỗi đã chọn
gci | select-string "something"
nhưng tôi không có ý tưởng cách từ chối tuyên bố này.
Tôi đang cố tìm tất cả các tệp không chứa chuỗi đã chọn. Tìm tệp có chứa rất dễ dàng:Tìm tệp không chứa chuỗi đã chọn
gci | select-string "something"
nhưng tôi không có ý tưởng cách từ chối tuyên bố này.
Tôi không chắc chắn nếu nó có thể được thực hiện mà không có sự foreach-object
nhưng công trình này:
gci |foreach-object{if (-not (select-string -inputobject $_ -Pattern "something")){$_}}
Bạn có thể sử dụng Where-Object
;
gci | Where-Object { !($_ | Select-String "something" -quiet) }
Như mentionend trong How do I output lines that do not match 'this_string' using Get-Content and Select-String in PowerShell?
Chọn-String có tham số NotMatch
.
Vì vậy, bạn có thể sử dụng nó:
gci | Select-String -notmatch "something"
wow - 3 downvotes - nhưng tại sao? – Bohne
Tôi cũng sẽ sử dụng công tắc '-List', tức là' Chọn-String ... -List' để làm này hiệu quả hơn, có lẽ, bởi vì chúng tôi không cần tất cả các kết quả phù hợp. –
Và một điều nữa. Mã này cũng trả về các thư mục. Để tránh điều này, tôi sẽ sử dụng 'gci -File' (trong PowerShell V3, ít nhất). –
'Where-Object' có thể làm cho nó đơn giản hơn. 'gci -File | Where-Object {! (Select-String -InputObject $ _ -Pattern "cái gì đó" -List)} ' –