1

我试图在 /usr 及其包含“main”的子目录中找到所有 c 文件,但我不知道如何让它从根目录开始搜索。我假设当前目录不在或者是 usr。所以我尝试了 grep -r "main" /usr/*.c 有什么建议吗?谢谢。

4

3 回答 3

2
find /usr -name "*.c" -exec grep -l main {} \;

是一个简单的版本,它单独 greps /usr 中的每个 .c 文件并输出它的名称。

您可以通过xargs减少对 grep 的调用来改进它:

find /usr -name "*.c" | xargs grep -l main
于 2012-10-04T00:27:16.643 回答
0
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
于 2012-10-04T00:49:30.877 回答
0

如果您安装了ack(在 Debian/Ubuntu 中称为 ack-grep),您可以简单地ack -l --cc main从 /usr 运行并得到结果。

于 2012-10-04T01:13:06.570 回答