LINUX.ORG.RU

почему не работает такая комманда?


0

0

задача такая, есть некий пакет ( директории, поддиректории ), я хочу достать оттуда все файлы по расширению, достать содержимое каждого и прогрепить по определенному слову.

Делаю так

$find -name "*.py" -printf "%p " | cat - | grep i18n

в итоге получаю результат работы комманды find. тоесть строку - список файлов. что я не так делаю?

anonymous

Ответ на: комментарий от sdio

спасиба.

ну хоть намекните где у мя миропонимание кривое?
я же вроде конвейер делаю, почему не работатет то?

anonymous
()
Ответ на: комментарий от anonymous

По конвейеру у тебя имена файлов передаются, а не их содержимое и cat их же (имена) передает на вход греп, греп ищет в именах.

sdio ★★★★★
()
Ответ на: комментарий от sdio

а в мане написано, что "cat -" может брать список со стандартного ввода.

cat же выводит содержимое файлов по их именам, или нет?

anonymous
()
Ответ на: комментарий от anonymous

Кстати *.py лучше в одинарных кавычках,тк если в данной дериктории есть филе, подходящее к этому шаблону по названию, то получится немного не то, что мы ожидали.

anonymous
()

делай вот так:

find -name "*.py" -printf "%p " | xargs grep i18n

Zert
()
Ответ на: комментарий от anonymous

man cat
  With no FILE, or when FILE is -, read standard input.

Это не значит, что со стандартного входа будут браться имена
файлов для дальнейшего вывода их (файлов) содержимого.

sdio ★★★★★
()
Ответ на: комментарий от anonymous

> намекните где у мя миропонимание кривое?

-printf "%p" выводит _все_ файлы в одну строку. Соответственно, если в ней есть то, что ищет grep, то вся строка и будет выведена, а если нет, то не будет выведено ничего. Делай так: "%p\n", а ещё лучше: -print

watashiwa_daredeska ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.