2011-08-02 20 views
3

/var/local/tmp/foo *という名前のファイルに対してlsコマンドを実行します。私は名前に*を付けてlsコマンドを実行してください。

%x[ls "#{path]"] 

を使用しようとしているが、これは返されます:%X [ls 'には/ var /ローカルの/ tmp/fooの*は']、エラーの上に返し

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

注意。

私は、同じコマンドを実行しますが、次のようにした場合:

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

それが正常に動作します。

私は、ディレクトリパスを文字列にすると、lsはそれを "/ var/local/tmp/foo *"という名前のファイルとして扱うことになると推測しています。

これを回避する方法はありますか?この文字列を保持する変数を使用したいので、/ var/local/tmp/foo *を直接入れるのはオプションではありません。 "/path/to/*"よう

答えて

7

何かがグロブと呼ばれ、それらは実際にシェルによって、ないlsのようなコマンドによって展開されています。シェルを実行してglobを展開することができますが、組み込みのDirクラスを使用する方が簡単です。

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

これは、一致するファイル名の配列を返します。

+0

が完璧です。ありがとう:) – Robin

関連する問題