2011-08-02 73 views
3

我想对名为/ var/local/tmp/foo *的文件执行ls命令。我一直在尝试使用用*名称执行ls命令

%x[ls "#{path]"] 

但这返回:

ls: /var/local/tmp/foo*: No such file or directory 

注意%×[LS '在/ var /本地的/ tmp/foo的*']也返回上面的错误。

如果我做同样的命令,但如下:

%x[ls /var/local/tmp/foo*] 

它工作正常。

我猜测把目录路径放到一个字符串中会导致ls将其视为一个字面上名为“/ var/local/tmp/foo *”的文件。

任何想法如何解决这个问题?我想用一个包含这个字符串的变量,所以直接放入/ var/local/tmp/foo *不是一个选项。

回答

7

喜欢的东西"/path/to/*"被称为水珠,它们实际上是由扩大了壳,而不是像ls命令。虽然您可以运行shell来让它为您扩展glob,但使用内置的Dir类更容易。

Dir["/path/to/*.txt"] 

这将返回一个匹配文件名的数组。

+0

完美。谢谢 :) – Robin