【发布时间】:2012-04-13 11:20:06
【问题描述】:
Unix 命令 find 没有做我想做的事。 情况是这样的
如果我输入:
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*"
输出显示:没有这样的文件或目录 为什么??
【问题讨论】:
-
您发布的内容应该起作用。你能给出更准确的命令列表和确切的结果吗?你用的是哪个外壳?
-
您输入的内容对我有用。无论您使用变量扩展
${dir}还是文字字符串../tmp,都应该得到完全相同的输出。您确定调用这两个命令的方式和时间没有什么不同吗?在这两种情况下,您当前的工作目录是否相同? -
你用的是什么外壳? tcsh?重击?克什?可能是 bash,但请具体说明。不同的 shell 有不同的变量赋值方式。
-
很抱歉给您带来了困惑。我更新了问题!谢谢
标签: linux unix variables path find