Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有find命令的regextype_Regex_Linux_Find - Fatal编程技术网

带有find命令的regextype

带有find命令的regextype,regex,linux,find,Regex,Linux,Find,我试图将find命令与-regextype一起使用,但它无法正常工作 我试图找到所有c和h文件,将它们发送到管道,并在这些文件中grep名称func\u foo。我错过了什么 $ find ./ -regextype sed -regex ".*\[c|h]" | xargs grep -n --color func_foo 同样在一个类似的方面,我尝试了以下命令,但它给了我一个类似于路径必须在表达式之前的错误: $ find ./ -type f "*.c" | xargs g

我试图将find命令与
-regextype
一起使用,但它无法正常工作

我试图找到所有
c
h
文件,将它们发送到管道,并在这些文件中grep名称
func\u foo
。我错过了什么

$ find ./ -regextype sed -regex ".*\[c|h]" | xargs grep -n --color func_foo
同样在一个类似的方面,我尝试了以下命令,但它给了我一个类似于路径必须在表达式之前的错误:

$ find  ./  -type  f  "*.c"  |  xargs  grep  -n  --color  func_foo
为什么不干脆做:

find ./ -name "*.[c|h]" | xargs grep -n --color func_foo


关于
find
的选项
-regextype
的有效参数,这来自
man find

-regextype类型

更改稍后发生的-regex和-iregex测试所理解的正则表达式语法 命令行。当前实现的类型是emacs(这是默认值), posix awk、posix basic、posix egrep和posix扩展


没有类型
sed

已接受的答案包含一些不准确之处。 在我的系统上,GNUFind的主页上说运行
find-regextype help
查看支持的正则表达式类型列表

# find -regextype help
find: Unknown regular expression type 'help'; valid types are 'findutils-default', 'awk', 'egrep', 'ed', 'emacs', 'gnu-awk', 'grep', 'posix-awk', 'posix-basic', 'posix-egrep', 'posix-extended', 'posix-minimal-basic', 'sed'.
例如,
find-regextype egrep-regex.*\(c | h)
查找
.c
.h
文件。 您的regexp语法错误,使用方括号而不是圆括号。用方括号括起来就是
[ch]


您也可以使用默认的regexp类型:
find-正则表达式“*\。\(c\| h\)$”
也可以使用。请注意,在这种情况下,您必须转义
|
字符(同时使用
sed
regextype)。使用
egrep
posix egrep
posix extended
posix extended
,“find-regextype help”给出了一个将sed列为类型的错误。。。特别是“查找:未知正则表达式类型‘help’;有效类型为‘findutils-default’、‘ed’、‘emacs’、‘gnu-awk’、‘grep’、‘posix-awk’、‘awk’、‘posix-basic’、‘posix-egreep’、‘posix-extended’、‘posix-minimal-basic’、‘sed’。”@Ubuntourist你回答的答案已经有将近8年的历史了,很可能从那时起就已经实施了更改。
# find -regextype help
find: Unknown regular expression type 'help'; valid types are 'findutils-default', 'awk', 'egrep', 'ed', 'emacs', 'gnu-awk', 'grep', 'posix-awk', 'posix-basic', 'posix-egrep', 'posix-extended', 'posix-minimal-basic', 'sed'.