LINUX:如何查找从根开始的文件(grep)?
我试图在/usr及其子目录中找到所有包含“main”的c文件,但我不知道如何让它从根开始搜索。我假设当前目录不在usr中或是usr。 所以我试过了 grep-r“main”/usr/*.c 有什么建议吗?谢谢LINUX:如何查找从根开始的文件(grep)?,linux,terminal,grep,root,Linux,Terminal,Grep,Root,我试图在/usr及其子目录中找到所有包含“main”的c文件,但我不知道如何让它从根开始搜索。我假设当前目录不在usr中或是usr。 所以我试过了 grep-r“main”/usr/*.c 有什么建议吗?谢谢 find /usr -name "*.c" -exec grep -l main {} \; 是一个简单的版本,它分别greps/usr中的每个.c文件并输出其名称 您可以通过使用xargs减少对grep的调用来改进它: find /usr -name "*.c" | xargs gre
find /usr -name "*.c" -exec grep -l main {} \;
是一个简单的版本,它分别greps/usr中的每个.c文件并输出其名称
您可以通过使用xargs
减少对grep的调用来改进它:
find /usr -name "*.c" | xargs grep -l main
如果您安装了(在Debian/Ubuntu中称为ack grep),您只需从/usr运行
ack-l--cc main即可得到结果。您还可以执行查找-exec grep-l main()+
。使用+
而不是\
告诉find使用多个文件名运行命令,类似于xargs的工作方式。Nice:我不知道这个技巧!
WHERETOLOOK=/
find $WHERETOLOOK -type f -iname "*.c" | xargs grep main
EXAMPLES:
$ find / -type f -iname "*.txt" 2> /dev/null | xargs grep INST | head -n 3
grep: /opt/android-sdk/SDK/opt/sun-jdk-1.6.0.33/db/demo/programs/vtis/data/svn_log.txt:Adding message for DATA_SQLDATA_READ_INSTANTIATION_EXCEPTION.
/opt/sun-jdk-1.6.0.33/db/demo/programs/vtis/data/svn_log.txt: - When a log record is encountered, set newFileStart to INVALID_LOG_INSTANT.
/opt/android-sdk/platforms/android-10/images/NOTICE.txt:DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA
$ find /usr/share/ -type f -iname "*.txt" | xargs grep INST | head -n 3
/usr/share/games/holotz-castle/game/menu/sv/menu.txt:INSTÄLLNINGAR
/usr/share/webapps/phpmyadmin/3.5.2.2/postinst-en.txt: mkdir ${MY_INSTALLDIR}/config
/usr/share/webapps/phpmyadmin/3.5.2.2/postinst-en.txt: chown ${VHOST_SERVER_UID}:${VHOST_SERVER_UID} ${MY_INSTALLDIR}/config
xargs: grep: terminated by signal 13