Directory
password管理をHaskellで書いてから、やっぱり実際に使えそうなもの書くのが一番楽しいなあー、と思った私。
なので、今頑張ってsuffix array勉強して検索エンジンを作ろうかと企んだりしているわけですが。
そうだ、ファイル検索作ろう!
と思い立つ。
調べてみると、
Directoryモジュールとかいう便利なものがあるんですね
import Directory import Control.Monad main = do list <- (getDirectoryContents ".") forM_ list putStrLn
これだけで、カレントディレクトリ内のファイル表示が出来てしまったよ。
さ、これをいじっていくか
あと、なんか面白くなったので、Linuxコマンド、mkdirを作ってみた
import Directory main = getLine >>= createDirectory
二行でフォルダが作れちゃう
そして、rmのrecursiveバージョン
import Directory main = getDirectoryContents "." >>= (\flist -> (getLine>>=rm flist)) rm :: [FilePath] -> FilePath -> IO() rm flist f = case any (==f) flist of True -> removeDirectory f False-> putStrLn $f++" is not exist...\n"
これで、フォルダを消すことができます。
よく考えたら、getLineではなく
getArgsにすれば、よりコマンドっぽいのにね.....
ただ、これではフォルダは消せるけれどファイルを消すことはできません。
Hoogleで調べたら、removeDiretcoryRecursiveという関数があるんですが、ghciで調べても入ってる様子はないし、
そもそも、
removeDiretcoryで、ファイルではなくフォルダが消せる時点でおかしいような?
とにかく!
このへんの関数をうまく使ってやれば、ファルダ検索・管理プログラムを組めそうです。
どういう風に組むか全然考えていないんだけれども笑