2

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

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}"

但我仍然找不到我的文件

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

你有什么想法(或答案)吗?

问候,

奥利维尔

4

3 回答 3

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

或者——你几乎试过了——</p>

echo /dir/This\ is\ the\ file\ -\ w*.csv
于 2012-09-17T09:38:23.807 回答
2

使用 bash 数组

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

如果保证只有一个匹配的文件,则只需展开$v. 否则,您可以通过扩展为获得匹配文件的完整列表

"${v[@]}"

或个人比赛使用

"${v[0]", "${v[1]}", etc
于 2012-09-17T12:30:37.683 回答
1

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

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

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

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

于 2012-09-17T09:43:17.120 回答