我想对名为/ var / local / tmp / foo *的文件执行ls命令。我一直在尝试使用
%x[ls "#{path]"]
但这会返回:
ls: /var/local/tmp/foo*: No such file or directory
请注意,%x [ls'/ var / local / tmp / foo *']也会返回错误。
如果我执行相同的命令,但如下所示:
%x[ls /var/local/tmp/foo*]
它可以正常工作。
我猜测将目录路径放入字符串会导致ls将其视为名为“/ var / local / tmp / foo *”的文件。
任何想法如何解决这个问题?我想使用一个包含这个字符串的变量,所以直接输入/ var / local / tmp / foo *不是一个选项。
答案 0 :(得分:8)
像"/path/to/*"
之类的东西被称为 glob ,它们实际上是由 shell 扩展的,而不是像ls
这样的命令。虽然你可以运行shell来让它为你扩展glob,但是使用内置的Dir
类更容易。
Dir["/path/to/*.txt"]
返回一组匹配的文件名。