2016年度 発展プログラミング演習 Findプログラム

概要

目標

ターミナルのコマンド findのようなプログラムを作成することで, 次のことを学びます.

$ find . -name 'HelloWorld.java'

findプログラムは,指定したディレクトリ以下から,特定の条件にしたがって ファイル,もしくはディレクトリを検索するコマンドです. 例えば,カレントディレクトリ以下の拡張子がHelloWorld.java という名前のファイルを見つけたい場合,左のコマンドで見つけられます. -nameというオプションで,検索したい名前を指定しているのです.

仕様

  1. Findプログラムは,指定したディレクトリ以下のファイル,ディレクトリを指定した条件で検索する.
  2. 検索にマッチしたファイル,ディレクトリの名前を出力する.
  3. 条件は次の通り.これらの条件の有無はコマンドライン引数で指定する.
    • ファイル,ディレクトリの種類が指定されたものであるか.
    • ファイル,ディレクトリの名前に指定された文字列が含まれるか.
    • ファイルサイズが指定された値より大きいか.
    • ファイルサイズが指定された値より小さい.
    • ファイルの中身に指定された文字列が含まれるか.

作成手順

以下の手順で作成していきます.

  1. コマンドライン引数で指定されたディレクトリを受け取る.
  2. 指定されたディレクトリから,ディレクトリを辿っていく.
  3. コマンドライン引数を解析する.
  4. ファイル,ディレクトリの種別で検索できるようにする.
  5. ファイル,ディレクトリを名前で検索できるようにする.
  6. ファイルをファイルサイズで検索できるようにする.
  7. コマンドライン引数でファイルの中身を検索する文字列を受け取れるようにする.
  8. ファイルの中身を指定された文字列で検索できるようにする.
  9. 文字列検索を高速に実施できるようにする.
  10. ファイル内の検索を正規表現で行えるようにする.

講義資料

1日目概要

  1. コマンドライン引数で指定されたディレクトリを受け取る.
  2. 指定されたディレクトリから,ディレクトリを辿っていく.

1日目の講義資料のページへ.

2日目概要

  1. コマンドライン引数を解析する.
  2. ファイル,ディレクトリの種別で検索できるようにする.
  3. ファイル,ディレクトリを名前で検索できるようにする.
  4. ファイル,ディレクトリをファイルサイズで検索できるようにする.

2日目の講義資料のページへ.

3日目概要

  1. コマンドライン引数でファイルの中身を検索する文字列を受け取れるようにする.
  2. ファイルの中身を指定された文字列で検索できるようにする.

3日目の講義資料のページへ.

4日目概要

  1. 文字列検索を高速に実施できるようにする.
  2. ファイル内の検索を正規表現で行えるようにする.

4日目の講義資料のページへ.