web-dev-qa-db-ja.com

フォルダ内のファイルを検索する

Juliaを使用して多くのテキストファイルを解析しようとしていますが、関数呼び出しを入力してそれぞれを個別に読み取るのではなく、ファイル名の配列をループしたいと考えています。これまでのところ、パターンに一致するファイルをフォルダーで検索する方法を見つけることができませんでした。

指定された文字列パターンに一致する、指定されたフォルダ内のすべてのファイル名を返す基本ライブラリJulia関数はありますか?

Rの同等の関数は、list.files()です。これが、必要なものを伝達するのに役立つ場合です。

24
MDe

ジュリアでは、list.files()に相当するのはreaddir([path])です。

私が知っている組み込みのディレクトリ検索はありませんが、それはワンライナーです:

searchdir(path,key) = filter(x->contains(x,key), readdir(path))


[〜#〜] update [〜#〜]:少なくともJulia v0.7以降、contains()occursin(substring, string)で非推奨になりました。したがって、上記のフィルターは次のようになります。

searchdir(path,key) = filter(x->occursin(key,x), readdir(path))
42
Isaiah Norton

別の解決策は、 Glob.jl パッケージを使用することです。たとえば、ディレクトリに次のファイルのリストがある場合:

foo1.txt
foo2.txt
foo3.txt
bar1.txt
foo.jl

そして、あなたが書くだろう「foo」で始まるすべてのテキストファイルを見つけたい

using Glob
glob("foo*.txt") #if searching the working directory
#output:
#"foo1.txt"
#"foo2.txt"
#"foo3.txt"
glob("foo*.txt","path/to/dir") #for specifying a different directory
#output:
#"path/to/dir/foo1.txt"
#"path/to/dir/foo2.txt"
#"path/to/dir/foo3.txt"
6
Trock