ファイルをアルファベット順に繰り返しリストし、フォルダ名のみを表示する行は含まれません。

ファイルをアルファベット順に繰り返しリストし、フォルダ名のみを表示する行は含まれません。

フォルダ名を具体的に表示する行を表示せずにアルファベット順にファイルを繰り返し表示するにはどうすればよいですか?

たとえば、次のようにして次の出力を取得できますtree --dirsfirst -fihan * -o filelist

00.-ScriptHookV [1.0.1737.0]
[128K]  00.-ScriptHookV [1.0.1737.0]/dinput8.dll*
[1.2M]  00.-ScriptHookV [1.0.1737.0]/ScriptHookV.dll*
01.-ScriptHookVDotNet [2.10.10]
[ 891]  01.-ScriptHookVDotNet [2.10.10]/LICENSE.txt*
[1.8K]  01.-ScriptHookVDotNet [2.10.10]/README.txt*
[1018K]  01.-ScriptHookVDotNet [2.10.10]/ScriptHookVDotNet2.dll*
[7.5K]  01.-ScriptHookVDotNet [2.10.10]/ScriptHookVDotNet2.pdb*
[ 92K]  01.-ScriptHookVDotNet [2.10.10]/ScriptHookVDotNet2.xml*
[ 34K]  01.-ScriptHookVDotNet [2.10.10]/ScriptHookVDotNet.asi*
02.-Heap Limit Adjuster [1.0.0]
[ 98K]  02.-Heap Limit Adjuster [1.0.0]/GTAV.HeapAdjuster.asi*
03.-OpenIV [3.1]
[132K]  03.-OpenIV [3.1]/OpenIV.asi*
04.-Enhanced Native Trainer [1.41 Update 1]
[ 15M]  04.-Enhanced Native Trainer [1.41 Update 1]/EnhancedNativeTrainer.asi*
[8.4K]  04.-Enhanced Native Trainer [1.41 Update 1]/ent-config.xml*

しかし、この種の出力が必要です(必ずしもファイルサイズではありません)。

[128K]  00.-ScriptHookV [1.0.1737.0]/dinput8.dll
[1.2M]  00.-ScriptHookV [1.0.1737.0]/ScriptHookV.dll
[ 891]  01.-ScriptHookVDotNet [2.10.10]/LICENSE.txt
[1.8K]  01.-ScriptHookVDotNet [2.10.10]/README.txt
[1018K]  01.-ScriptHookVDotNet [2.10.10]/ScriptHookVDotNet2.dll
[7.5K]  01.-ScriptHookVDotNet [2.10.10]/ScriptHookVDotNet2.pdb
[ 92K]  01.-ScriptHookVDotNet [2.10.10]/ScriptHookVDotNet2.xml
[ 34K]  01.-ScriptHookVDotNet [2.10.10]/ScriptHookVDotNet.asi
[ 98K]  02.-Heap Limit Adjuster [1.0.0]/GTAV.HeapAdjuster.asi
[132K]  03.-OpenIV [3.1]/OpenIV.asi
[ 15M]  04.-Enhanced Native Trainer [1.41 Update 1]/EnhancedNativeTrainer.asi
[8.4K]  04.-Enhanced Native Trainer [1.41 Update 1]/ent-config.xml

どんな提案がありますか?

答え1

zshシェルの使用:

print -C1 **/*(.DN)

シェルの場合、zsh指定されたワイルドカードパターンを単一の列に展開した結果が印刷されます(これはその機能ですprint -C1)。パターンは、現在のディレクトリ内または下にある**/*(.DN)すべての一般ファイル(ディレクトリなどではなく、glob修飾子が実行する操作)のパス名に拡張されます。(.)デフォルトでは、これはアルファベット順のソーターです。 glob修飾子はそれぞれ設定とシェルで同じ効果を持ちます(DN)(つまり、パターンの一致によって名前が隠され、一致するものがなければまったく拡張されません)。dotglobnullglobbash

通常のファイルのリストに加えて、ディレクトリではなくファイルのリスト(.)にも使用できます。(^/)

では、bash次のことができます。

shopt -s globstar dotglob nullglob
for pathname in **/*; do
    [[ ! -d $pathname ]] && printf '%s\n' "$pathname"
done

ディレクトリ以外のすべてのエントリ(隠しファイルを含む)のアルファベット順に並べられたパス名を繰り返し印刷します。

答え2

携帯性がとても良いはずです。

find . -type f | sort

入力データに名前に改行を含むファイルが含まれている場合は、次のようなファイルをより適切に処理する必要があると思います(この可能性のあるケースを指摘したKusalalanandaに感謝します)。

find . -type f -print0 | sort -z | tr '\0' '\n'

答え3

現在のディレクトリのすべてのサブディレクトリにあるすべてのファイルをファイル名でソートして一覧表示するには、findコマンドを使用します。

find . -type f -exec basename {} \; | sort

関連情報