Я действительно привык делать grep -iIr
в оболочке Unix, но пока еще не получил эквивалент PowerShell.
В принципе, указанная выше команда рекурсивно ищет целевые папки и игнорирует двоичные файлы из-за опции "-I". Эта опция также эквивалентна опции --binary-files=without-match
, которая гласит: "рассматривать двоичные файлы как не соответствующие строке поиска"
До сих пор я использовал Get-ChildItems -r | Select-String
в качестве замены grep PowerShell с добавлением случайных Where-Object
. Но я не понял способ игнорировать все двоичные файлы, такие как команда grep -I
.
Как двоичные файлы можно фильтровать или игнорировать с помощью Powershell?
Итак, для заданного пути я хочу, чтобы Select-String
выполнял поиск текстовых файлов.
РЕДАКТИРОВАТЬ: Еще несколько часов в Google произвели этот вопрос Как определить содержимое файла ASCII или Binary. Вопрос гласит: "ASCII", но я считаю, что писатель имел в виду "Text Encoded", как и я.
EDIT: Кажется, что для решения этой проблемы нужно написать isBinary()
. Вероятно, утилита командной строки С#, чтобы сделать ее более полезной.
EDIT: Кажется, что то, что grep
делает, это проверка на ASCII NUL Byte или UTF-8 Overlong. Если они существуют, он считает файл двоичным. Это один вызов memchr().