#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 до этого).