web-dev-qa-db-ja.com

CMDDIRを使用してディレクトリを名前で並べ替える

次のコマンドを使用して、サブディレクトリ内のファイルを含むファイルを名前順に一覧表示しています。

dir /b/s/on

ファイルは指定されたディレクトリ内で正しく順序付けられていますが、ディレクトリは順序付けられていません。ディレクトリは、最終更新日順に並べられているようです。

dirはディレクトリも並べ替えることができますか?

これは、出力の一部のスクリーンショットです(難読化されています)。

enter image description here

3
Paul Fleming

dirはディレクトリをツリーウォークしますが、リーフディレクトリ内のエントリのみをソートします。これはFATファイルシステムであるため問題です。 FATファイルシステムでは、任意のディレクトリのエントリがソートされていないため、ツリーウォークがソートされていません。対照的に、NTFSディレクトリは常にソートされます。

いくつかの解決策があります。最も簡単なのは、出力をsortにパイプすることです。

dir /b/s | sort

(注文にsortを使用している場合は、dir/onオプションを指定する必要はありません。)

他の選択肢は、Unixスタイルのlsを使用することです。これは、確かにこれを正しく行うでしょう。例としては、 Cygwin または私自身の Hamilton C Shell のいずれかのlsがあります。

4
Nicole Hamilton