【发布时间】:2017-07-19 15:07:15
【问题描述】:
很多时候我需要从一个目录和下面的目录中搜索具有特定类型的所有文件中的模式。例如,我需要让 grep 不要查看 *.h、*.cpp 或 *.c 以外的文件。但是如果我输入:
grep -r pattern .
它会查看所有文件。如果我输入:
grep -r pattern *.c
它尝试当前文件夹中的 *.c 文件(在我的情况下没有文件)和 *.c 文件夹中的文件(在我的情况下没有文件夹)。我也想问它查看所有文件夹,但只查看给定类型的文件。我认为 grep 不足以用于此目的。所以,我也从 find 那里得到帮助,就像这样:
grep pattern `find . -name '*c'`
首先,让我知道我是否正确地从 find 获得帮助。 grep 够用吗?其次,我更喜欢为 bash 写一个别名,这样使用:
mygrep pattern c
被翻译成相同的命令,避免使用 ` 和 ' 并且更简单。我试过了:
alias mygrep="grep $1 `find . -name '*$2'`"
但它不起作用并发出错误:
grep: c: No such file or directory
我尝试更改它,但我无法成功获得别名。
有什么想法吗?
【问题讨论】:
-
只搜索特定的文件类型,
grep -r --include='*.c' 'pattern'.. 还有其他选项以及--exclude和--exclude-dir.. 在任何情况下,如回答,使用函数而不是别名跨度>