Что здесь делает команда DOS «findstr»?

#windows #command #dos #prompt #findstr

#Windows #команда #dos #запрос #findstr

Вопрос:

Насколько я понимаю, findstr ищет текст в файлах. Что же тогда заставляет ее искать шаблон в самом имени файла?

 dir | findstr "test[0-9][0-9][0-9]test"
  

Изменяет ли канал свое поведение? Кто-нибудь, объясните внутреннюю работу этого. Я знаю, что это работает, но я не понимаю, как это работает. Спасибо.

Ответ №1:

Канал перенаправляет стандартный вывод dir на стандартный ввод findstr , это работает, поскольку findstr будут использоваться либо аргументы, переданные ему в командной строке, либо что-либо, переданное ему через stdin.

Комментарии:

1. Думаю, теперь я понял. Таким образом, вместо того, чтобы читать файл построчно, теперь он читает список имен файлов построчно?

2. Вывод dir команда dir записывается непосредственно в findstr, поэтому ее эквивалент dir > temp.txt amp; findstr [pattern] temp.txt

Ответ №2:

Я не знаю findstr саму себя, но она выглядит похожей на grep .

Что она здесь делает, так это принимает выходные данные dir (список каталогов) и выполняет поиск некоторой строки в этих выходных данных. Затем она выводит только те строки, которые совпадают (эффективный поиск в списке каталогов).

Этот процесс (называемый конвейерным) довольно распространен в Unix-подобных операционных системах. Как вы видите, она также существует в Windows (и DOS до этого).