2

基本上,这个命令对所有子目录中的所有文件进行递归 grep,我经常使用它

但它很长,需要一段时间才能输入

所以我想知道如果不是...

$ 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

当然。在 bash 中:

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

然后这样称呼它:

findrecursive "hello"
于 2012-09-08T21:53:07.373 回答
1

你总是可以把它变成一个 shell 脚本,然后把它放进你的一个 bin 中。例如:

#!/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 回答
1

无论出于何种原因,这些解决方案在 LUbuntu 中使用 LXTerminal 中的 bash 对我不起作用。我将以下内容添加到我的~/.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 回答