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

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

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

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


person oscilatingcretin    schedule 03.05.2011    source источник


Ответы (2)


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

person Alex K.    schedule 03.05.2011
comment
Думаю, теперь я понял. Итак, вместо того, чтобы читать файл построчно, теперь он читает список имен файлов построчно? - person oscilatingcretin; 03.05.2011
comment
Вывод команды dir записывается непосредственно в findstr, поэтому он эквивалентен dir > temp.txt & findstr [pattern] temp.txt. - person Alex K.; 03.05.2011

Я не знаю самого findstr, но похоже, что он похож на grep.

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

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

person Joachim Sauer    schedule 03.05.2011