Linux find 命令有关问题

以下两个命令本来是想显示当前目录的.h和.c结尾文件的行数信息, find . -name '*.c' -o -name '*.h' -exec wc -l {} \; 和find . -name '*.[ch]' -exec wc -l {} \; 显示的结果为什么不同,第一个只能显示.h结尾的文件,而第二个显示.h和.c文件, 不要说... 以下两个命令本来是想显示当前目录的.h和.c结尾文件的行数信息, find . -name '*.c' -o -name '*.h' -exec wc -l {} \; 和find . -name '*.[ch]' -exec wc -l {} \; 显示的结果为什么不同,第一个只能显示.h结尾的文件,而第二个显示.h和.c文件, 不要说用什么cat命令就能搞定,我这里问的是此处两个命令的不同处,希望高手解答下,谢谢。 PS:刚刚建的一个Linux群,希望正学习Linux的高手或者菜鸟一起学习哈,本人刚刚接触Linux 展开 额群号忘发了 = =# 199131992

第1个回答  2019-10-22
先说你第二条命令吧,第二条命令其实就是包含后缀名.c和.h还有.ch的文件都能搜出来
第一条是你没理解-o参数的具体用法,它是相当与||但是这样用是不对的,只有当前一条命令执行失败才会执行后一条命令,也就是说find
.
-name
'*.c'
-o
-name
'*.h'
-exec
wc
-l
{}
\;这个相当于是3条命令的集合,它的意思是
找.c或者.h文件,而且只要有一条满足就执行成功,-exec针对的是-name
'*.h'这句命令,所以它只打印了.h文件的名字
相似回答
大家正在搜