基本上,这个命令对所有子目录中的所有文件进行递归 grep,我经常使用它
但它很长,需要一段时间才能输入
所以我想知道如果不是...
$ find . -type f -exec grep -l <some word here> {} \;;
有一种方法可以在我的 .bashrc 中给它或其他东西起别名,这样我就可以做类似...
$ findrecursive <some word here>
我只是假设您使用 Linux 和 GNU 工具,我不知道它是否是 GNU 扩展,但否则下面的代码片段应该可以快速轻松地完成您想要的操作:
grep -r <search-regexp>
以上不遵循符号链接,如果您希望搜索执行您需要的操作:
grep -R <search-regexp>
在某些发行版中,有一个rgrep
命令,我只是认为它是grep -r
. 如果您没有它,只需alias rgrep="grep -r"
将其放入您的 .bashrc 或等效文件中。
当然。在 bash 中:
function findrecursive() { find . -type f -exec grep -l "$1" {} \;; }
然后这样称呼它:
findrecursive "hello"
你总是可以把它变成一个 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 将变为。
无论出于何种原因,这些解决方案在 LUbuntu 中使用 LXTerminal 中的 bash 对我不起作用。我将以下内容添加到我的~/.bash_aliases
:
function find_helper() { /usr/bin/find . -iname "$@" -readable -prune -print; }
alias find='find_helper'
我现在有了我预期的行为。例如:
find *.xml
pwd
从过滤掉Permission Denied
消息中递归搜索。