ファイル→ディレクトリの順にソートする

abc
def
aaa/
bbb/
ccc/abcd.txt
ccc/efgh.txt
ccc/ddd/

というようにファイル→ディレクトリの順にソートしようと思ったのですが、既存のコマンドでいいオプションが見つからなかったので自分で作りました。

設計

  • ディレクトリ部分を抜いたファイル名の頭に'!'等の、通常ファイル名に使われる文字より小さい文字を足す。
  • ソートする。

!abc
!def
aaa/
bbb/
ccc/!abcd.txt
ccc/!efgh.txt
ccc/ddd/

  • 最初に継ぎ足した文字を消す。


いたって単純な実装です。

……このくらいのことだったら既存のコマンドでできるような気がしてならないのですが、私には分かりませんでした。知ってる方がいたら是非教えてほしいものです。