2011-08-02 29 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