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 *”
输出说:没有这样的文件或目录 为什么?
答案 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*"