このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1267796762/74
#  【 課題 】http://ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/964.txt 
# 
# ・指定したディレクトリの一覧を表示する。サブディレクトリがあればその一覧も表示する。
# ・指定したディレクトリからの相対パスで出力。

% Prolog ディレクトリをget_byte/2できるPrologはないと思う。

指定したディレクトリの一覧を表示する。サブディレクトリがあればその一覧も表示する(_ディレクトリのバス) :-
        指定したディレクトリの情報を取得(_ディレクトリのパス,_ディレクトリの情報ならび),
        一覧を表示する。サブディレクトリがあればその一覧も表示する(_ディレクトリのバス,_ディレクトリの情報ならび).

指定したディレクトリの情報を取得(_ディレクトリのパス,_ディレクトリの情報ならび) :-
        concat_atom(['ls -l ',_ディレクトリのパス],S),
        shs(S,_ディレクトリ情報ならび),!.

一覧を表示する。サブディレクトリがあればその一覧も表示する(_ディレクトリのパス) :-
        write_formatted('%%% ディレクトリ=%t %%%\n',[_ディレクトリのパス]),
        一覧を表示する(_ディレクトリのパス),
        サブディレクトリがあればその一覧も表示する。(_ディレクトリのパス).

一覧を表示する([]) :- write('\n'),!.
一覧を表示する([_行|R]) :- write_formatted('%t\n',[_行]),一覧を表示する(R).

サブディレクトリがあればその一覧も表示する([]) :- !.
サブディレクトリがあればその一覧も表示する([_行|R]) :-
        sub_atom(_行,0,1,_,d),
        ディレクトリのパスを取得(_行,_ディレクトリのパス),
        指定したディレクトリの一覧を表示する。サブディレクトリがあればその一覧も表示する(_ディレクトリのバス),
        サブディレクトリがあればその一覧も表示する(R),!.
サブディレクトリがあればその一覧も表示する([_|R]) :- サブディレクトリがあればその一覧も表示する(R).

ディレクトリのパスを取得(_行,_ディレクトリのパス) :- split(_行,[' '],L),last(L,_ディレクトリのパス).