1

/usr とそのサブディレクトリにある "main" を含むすべての c ファイルを見つけようとしていますが、ルートから検索を開始する方法がわかりません。現在のディレクトリが usr にないか、または usr であると想定しています。だから私は試してみました grep -r "main" /usr/*.c 何か提案はありますか? ありがとう。

4

3 に答える 3

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

/usr 内の各 .c ファイルを個別に grep し、その名前を出力する単純なバージョンです。

xargsgrep の呼び出しを減らすために使用することで改善できます。

find /usr -name "*.c" | xargs grep -l main
于 2012-10-04T00:27:16.643 に答える
0

ack (Debian/Ubuntu では ack-grep として知られている)をインストールした場合は、単純ack -l --cc mainに /usr から実行するだけで結果が得られます。

于 2012-10-04T01:13:06.570 に答える
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 に答える