我经常想写这样的命令(zsh
如果相关,在 中):
find <somebasedirectory> | \
grep stringinfilenamesIwant | \
grep -v stringinfilesnamesIdont | \
xargs dosomecommand
(或更复杂的 greps 组合)
近年来find
添加了-print0
开关,并且 xargs 添加了-0
,它允许通过空终止文件名以优雅的方式处理名称中带有空格的文件,从而允许这样做:
find <somebasedirectory> -print0 | xargs -0 dosomecommand
但是,grep
(至少我拥有的版本,Ubuntu 上的 GNU grep 2.10)似乎没有等效于使用和生成空终止行的方法;它有--null
,但这似乎只与使用-l
grep 直接在文件中搜索时使用输出名称有关。
是否有可以与 grep 一起使用的等效选项或选项组合?或者,是否有一种简单而优雅的方式来简单地使用 find-regex
或 Perl 来表达我的命令管道?