【发布时间】:2013-09-20 21:44:28
【问题描述】:
我正在尝试编写一个 bash 脚本来使用 grep 在我的源目录中搜索字符串——不,我不能使用 ack。
目录结构是
标题:.../product/package/product-module/i/filename.h
来源:.../product/package/product-module/s/filename.c
我想选择是否指定module(搜索所有模块),这是$2 的论点。问题是,我无法让 *$2 或 "*$2" 在脚本中工作(请参阅下文)。
edit: 前者的尝试没有任何输出,后者的结果是“grep: No such file or directory”
如果我想将* 和grep 与另一个字符串复合,如何正确使用它?
#!/bin/bash
# Usage: search_src -[si] < module | all > < target >
if [ $1 == "-s" ]; then
fext="c"
subdir="s"
elif [ $1 == "-i" ]; then
fext="h"
subdir="i"
else
fext="[ch]"
subdir="[si]"
fi
if [ $2 == "all" ]; then
module=*;
else
module=*$2;
fi
shift 2;
grep \"$@\" ~/workspace/*/package/$module/$subdir/*.$fext
【问题讨论】:
-
您在寻找像
grep -r *.{c,h}这样的人吗?-r可以选择递归复制! -
不,据我了解,
-r将报告所有子目录中的匹配项,但此脚本的目的是只查看其中的一些。