[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:01021] Re: ファイルのソート結果が不定となる場合



 しらいです。

In Message-Id <op.wxe40q07c4zqer@pc02>
        "Hironao Komatsu" <hirkmt@gmail.com>さんwrites:
> 小松です。

> file.c の cmplist() についてですが、特に(ファイル名はユニークなので)
> ファイルサイズやタイムスタンプが等しい時、ファイルの並び順はディレク
> トリからの読み出し順、あるいは前回のソート結果の影響によって不定にな
> ります。

 いえ、それはわざとにそうしています。本家『FD』の実装を模
すために、わざわざ前回のソート結果まで持たせてあるんです。こ
れはこれで需要があると思いますけど。


> そこで、これらの時はファイル名でも比較するというのを提案したいのです
> がどうでしょう。問題は、「日付は降順で、名前では昇順で」とかいった複
> 雑な要望が来るかもしれないことですが……。

 その場合は先に filename なり timestamp なりの順に並べてお
けば良い訳で、やろうと思えば、操作の手順によって比較対象の優
先順位は自由に操作出来ますよね。
 細かい拘りなので man page 等では言及していませんけど、気に
する人だと割と簡単に気づく程度の単純なルールじゃないかと思い
ます。


> と、これに関連するもうひとつの議論として、ファイルリストの名前順ソー
> トを strcmp() で行うのか、 strverscmp() で行うのか、という点です。後
> 者の場合、ソート後は(GNUの)ls -vのようになります。

 こういうニーズに対する簡易的な解が「長さ順」だったんですが、
これは飽くまでも数字のみで構成された filename に対する対処で
しかないので、version 順というニーズがあるのは理解出来ます。
 ただねー、こういう多分に semantics な仕様というものは得て
して期待したとおりの結果を生まないことが多いんですよね。例え
ば「1.c」と「1-0.c」はどっちが若いべきでしょう?
 こうなってくると、単なる数値でしかない ASCII code に意味を
持たせてそれなりの優先順位をつける必要まで生じて来ます。そう
簡単には「思ったとおり」にはならないんですよね。

 ニーズは判りますが贅沢言うときりがないので、私は ls(1) 程
度の sort 機能で十分だと思います。本家『FD』もそうですしね。

                                               しらい たかし