Нулевой символ разрывает канал в find -exec - PullRequest
0 голосов
/ 17 января 2011

Я пытаюсь найти каждый Perl-скрипт в заданном каталоге и запустить скрипт, который я для них написал.Я придумал что-то вроде

find . -type f -exec file {} \; | grep perl | awk -F':' '{print $1}' | myscript

Я обеспокоен тем, что где-нибудь в имени файла есть ':', так что, хотя я бы использовал опцию file '--print0, чтобы дать мне что-токак

find . -type f -exec file --print0 {} \; | grep perl | awk -F'\0' '{print $1}' | myscript

Это не работает.Вместо этого я получаю кучу ошибок find: `file' terminated by signal 13, которые, как я понимаю, указывают на сломанную трубу.Есть ли:

лучший способ получить путь ко всем моим сценариям Perl, или способ, позволяющий избежать прерывания канала пустым символом

1 Ответ

0 голосов
/ 18 января 2011

Это действительно просто, в конце концов:

find . -type f -exec file --print0 "{}" + | \
perl -aF'\0' -lne 'print$F[0] if/perl/i'
...