Я часто хочу писать такие команды (в zsh
, если это необходимо):
find <somebasedirectory> | \
grep stringinfilenamesIwant | \
grep -v stringinfilesnamesIdont | \
xargs dosomecommand
(или более сложные комбинации greps)
В последние годы find
добавлен переключатель -print0
, и xargs добавил -0
, что позволяет обрабатывать файлы с пробелами в имени элегантным способом путем нумерации имен файлов вместо этого, что позволяет:
find <somebasedirectory> -print0 | xargs -0 dosomecommand
Однако grep
(по крайней мере версия, которую я имею, GNU grep 2.10 на Ubuntu), похоже, не имеет эквивалента, чтобы потреблять и генерации строк с нулевым завершением; он имеет --null
, но это только кажется связанным с использованием -l
для вывода имен при поиске в файлах напрямую с помощью grep.
Есть ли эквивалентная опция или комбинация параметров, которые я могу использовать с grep? Альтернативно, есть простой и элегантный способ выразить свою команду команд просто используя find -regex
или, возможно, Perl?