フォルダ名を具体的に表示する行を表示せずにアルファベット順にファイルを繰り返し表示するにはどうすればよいですか?
たとえば、次のようにして次の出力を取得できます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)
(つまり、パターンの一致によって名前が隠され、一致するものがなければまったく拡張されません)。dotglob
nullglob
bash
通常のファイルのリストに加えて、ディレクトリではなくファイルのリスト(.)
にも使用できます。(^/)
では、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