파일을 알파벳 순서로 반복적으로 나열하고 폴더 이름만 표시하는 줄을 포함하지 않습니다.

파일을 알파벳 순서로 반복적으로 나열하고 폴더 이름만 표시하는 줄을 포함하지 않습니다.

폴더 이름을 구체적으로 표시하는 줄을 표시하지 않고 알파벳 순서로 파일을 반복적으로 나열하려면 어떻게 해야 합니까?

예를 들어 다음을 사용하여 다음 출력을 얻을 수 있습니다 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

입력 데이터에 이름에 줄 바꿈이 포함된 파일이 포함된 경우 다음이 해당 파일을 더 잘 처리해야 한다고 생각합니다(이 가능한 사례를 지적한 Kusalananda에게 감사드립니다).

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

답변3

현재 디렉토리의 모든 하위 디렉토리에 있는 모든 파일을 파일 이름별로 정렬하여 나열하려면 find 명령을 사용하십시오.

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

관련 정보