【发布时间】:2015-09-25 17:08:23
【问题描述】:
我正在尝试创建一个函数,该函数基本上接受f hello there my friend 之类的参数,并使用find 在目录中搜索任何这些字符串的所有出现,因此它将是find | grep 'hello\|there\|my\|friend'。我是 shell 脚本的新手,但我的代码如下:
function f {
cmd="find | grep '"
for var in "$@"
do
cmd="$cmd$var\\|"
done
cmd="${cmd%\\|}'"
echo "$cmd"
$cmd
}
当我执行命令时,我得到这个:
# f hello there my friend
find | grep 'hello\|there\|my\|friend'
find: `|': No such file or directory
find: `grep': No such file or directory
find: `\'hello\\|there\\|my\\|friend\'': No such file or directory
为什么它不起作用,我怎样才能使它起作用?我想这与未将字符串转换为命令有关,但我对 shell 脚本的工作原理知之甚少。
【问题讨论】:
-
等等...您要在文件名或文件内容中搜索这些字符串吗?
-
@gniourf_gniourf 文件名。搜索内容是通过
grep -r -
确定文件名:那么您是在寻找完整路径还是只是文件名?因为如果目录名称与字符串匹配,您的方法将包含给定目录中的所有文件。