一番長いファイル名は?

30分プログラム、その536。一番長いファイル名が何か調べてみる。
ファイルの一覧の取得はlsやfindに任せればいいので、文字列の長さによるソートをコマンドとして実装した。

ネットワークがない環境で書いたので、infoやmanを駆使しようと思ったけど、さっぱり分からなかった。HTML版のリファレンスをローカルに持っといたほうがいいかもしれない。

使い方

# $ find ~/c |  gosh lsort.scm  | head -1 でもOK
$ find ~/c -exec basename {} \;|  gosh lsort.scm  | head -1
Scrap_your_boilerplate:_a_practical_design_pattern_for_generic_programming.pdf

ソースコード

#! /opt/local/bin/gosh
;; -*- mode:scheme; coding:utf-8 -*-
;;
;; lsort.scm -
;;
;; Copyright(C) 2009 by mzp
;; Author: MIZUNO Hiroki / mzpppp at gmail dot com
;; http://howdyworld.org
;;
;; Timestamp: 2009/02/26 08:31:34
;;
;; This program is free software; you can redistribute it and/or
;; modify it under MIT Lincence.
;;

(use srfi-1)
(define (length-sort xs)
  (sort xs (lambda (x y) (> (string-length x) (string-length y)))))

(define (main _)
  (for-each print (length-sort (port->string-list (standard-input-port)))))