2

基本的に、このコマンドはすべてのサブディレクトリ内のすべてのファイルに対して再帰的なgrepを実行し、私はそれをALOTで使用します

しかし、それは長すぎて、入力するのに時間がかかります

だから私は代わりに...

$ find . -type f -exec grep -l <some word here> {} \;;

私の.bashrcにそれまたは何かをエイリアスする方法があったので、私はちょうどのようなことをすることができました...

$ findrecursive <some word here>
4

4 に答える 4

7

Linux と GNU ツールを使用していると仮定します。それが GNU 拡張機能かどうかはわかりませんが、それ以外の場合は、以下のスニペットが必要なことを迅速かつ簡単に実行するはずです。

grep -r <search-regexp>

検索で必要な場合は、上記はシンボリックリンクに従いません。

grep -R <search-regexp>

一部のディストリビューションにはrgrep、エイリアスと思われるコマンドがありますgrep -r。持っていない場合はalias rgrep="grep -r"、.bashrc または同等のものに入れます。

于 2012-09-08T21:54:00.440 に答える
4

もちろん。バッシュの場合:

function findrecursive() { find . -type f -exec grep -l "$1" {} \;; }

そして、次のように呼び出します。

findrecursive "hello"
于 2012-09-08T21:53:07.373 に答える
1

何らかの理由で、これらのソリューションは、LXTerminal で bash を使用する LUbuntu では機能しませんでした。私は私のに以下を追加しました~/.bash_aliases

function find_helper() { /usr/bin/find . -iname "$@" -readable -prune -print; }
alias find='find_helper'

そして、私は今、私が期待した動作をしています。例えば:

find *.xml

pwdメッセージをフィルタリングして再帰的に検索しPermission Deniedます。

于 2016-04-20T20:21:21.327 に答える
1

いつでもシェルスクリプトにして、ビンの 1 つに入れることができます。例えば:

#!/bin/bash
# findrecursive.sh

find . -type f -exec grep -l "$1" {} \;;

次に、それを実行可能にした後 (たとえばchmod、どこかのパス ディレクトリに配置した後 (たとえば/bin)、次のように言って呼び出すことができます。

findrecursive.sh <some word here>

もちろん、.sh拡張子は必要ありません。これは並べ替えの規則に過ぎません。<some word here>また、スクリプトを呼び出すと $1 になることに注意してください。

于 2012-09-08T21:55:11.053 に答える