如何在Unix find命令的path参数中使用变量?

时间:2012-03-29 18:58:02

标签: linux unix variables path find

Unix命令查找不能做我想做的事情。 这是情况

如果我输入: find ../tmp -name "\*tmp\*"

它正确输出tmp文件夹

中名称中包含“tmp”的文件

但是当我输入时:

dir=../tmp #assign ../tmp as a variable named dir

find ${dir} -name "\*tmp\*"

输出显示:没有这样的文件或目录

我的猜测是find命令假定变量“dir”作为要查找的文件? 我该如何解决这个问题? 我想知道这个的原因是我可以将路径作为我脚本的参数传递。 感谢

-----------附加评论

我使用bash shell。 对困惑感到抱歉。上面的代码有效。真正的问题是我在变量中加入{}结构。例如, 当我输入

dir = .. / {tmp1,tmp3} #assign ../{tmp1,tmp3}作为名为dir的变量

找到$ {dir} -name“* tmp *”

输出说:没有这样的文件或目录 为什么?

2 个答案:

答案 0 :(得分:3)

首先按命令行评估命令行,然后完成任何操作(如设置环境变量,调用程序)。因此,在计算命令行之前不会设置$ dir。解决问题的一种可能性是将变量设置与其使用区分开;

dir=../tmp ; find "$dir" -name "tmp"

或将命令分成两行(Thiruvalluvar的回答)。

dir=../tmp
find "$dir" -name "tmp"

答案 1 :(得分:1)

这样做:

(从命令行)

# dir="../tmp/whatever/your/directory"
# find $dir -name "*tmp*"