filename包含变量中的空格和通配符

时间:2012-09-17 09:33:30

标签: file bash wildcard space

我收到名称包含空格并每周更改的文件(名称包含周数)

IE,本周的文件看起来像This is the file - w37.csv

我必须编写一个脚本来考虑这个文件。 我没有成功写这个剧本。

如果我这样做:

    $FILE="This is the file - w*.csv"

我找不到/dir/${FILE}

我尝试了"This\ is\ the\ file - w*.csv"

我尝试了/dir/"${FILE}""/dir/${FILE}"

但我仍然无法找到我的档案

看起来名称中的空格需要变量要双引号,但是,不会分析通配符。

你有想法(或答案)吗?

此致

奥利弗

3 个答案:

答案 0 :(得分:3)

echo /dir/"This is the file - w"*.csv

或 - 你几乎尝试过 -

echo /dir/This\ is\ the\ file\ -\ w*.csv

答案 1 :(得分:1)

首先,你不应该在作业中使用美元符号。

此外,在赋值中不调用通配符扩展。例如,您可以使用流程替换:

FILE=$(echo 'This is the file - w'*.csv)

请注意,通配符本身不包含在引号中。引号可防止通配符扩展。

答案 2 :(得分:1)

使用bash数组

v=( /dir/This\ is\ the\ file - w*.csv )

如果确保只有一个匹配的文件,您只需展开$v即可。否则,您可以通过扩展为

来获取匹配文件的完整列表
"${v[@]}"

或使用

的个人比赛
"${v[0]", "${v[1]}", etc