「検索」結果をアルファベット順と位相順にソートする方法は?

「検索」結果をアルファベット順と位相順にソートする方法は?

次のようなレイアウトのファイルがあるとしましょう。

$ tree
.
├── 01/
│   ├── example.txt
│   └── foobar.txt
├── 02/
│   └── example.txt
└── 03/
    ├── example.txt
    └── test.txt

3 directories, 5 files

find .ディレクトリとファイルをトポロジ順(つまり、ディレクトリ名が内容の前に置かれる)と同じディレクトリ内でアルファベット順に印刷したいと思います。代わりに私が得た結果は次のとおりです。

$ find .
.
./02
./02/example.txt
./01
./01/foobar.txt
./01/example.txt
./03
./03/test.txt
./03/example.txt

出力が次のようになります。

.
./01
./01/foobar.txt
./01/example.txt
./02
./02/example.txt
./03
./03/example.txt
./03/test.txt

コマンドが完了する前に行を順番に処理しsortたいので、他のコマンドにパイプしたくありません。find

ベストアンサー1

あなたはそうすることはできません。

特定の順序でファイルを処理するには、処理を開始する前にその順序でファイルを並べ替える必要があります。

findファイルシステムで任意の順序でファイル/ディレクトリを検索します(しばしば「ディレクトリ順序」と呼ばれ、多くのファイルシステムでは主に作成日に影響されますが、ファイル/ディレクトリが削除されるとその場所が再利用される可能性があるため、基本的に次のようになります。仮定する必要があります)。ランダム)、あなたの場合はアルファベット順ではないようです。しかし、アルファベット順で最初に、おそらくファイルシステムで最後になるでしょう。したがって、ファイルをアルファベット順に処理するには、ディレクトリ全体を読み取る必要があります。

必要なものに最も近い結果を得るには、いくつかのコーディングを実行する必要があるかもしれません。検索の最上位ディレクトリを検索している場合は、「01」ディレクトリを次に検索し、次に「02」、...を検索すると同時に「02」(およびそれ以降のディレクトリ)を検索しながら「01」処理を開始できます。 。 (ディレクトリ構造がより一般的な場合は、適切に一般化してください。)

おすすめ記事