폴더 이름을 구체적으로 표시하는 줄을 표시하지 않고 알파벳 순서로 파일을 반복적으로 나열하려면 어떻게 해야 합니까?
예를 들어 다음을 사용하여 다음 출력을 얻을 수 있습니다 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
입력 데이터에 이름에 줄 바꿈이 포함된 파일이 포함된 경우 다음이 해당 파일을 더 잘 처리해야 한다고 생각합니다(이 가능한 사례를 지적한 Kusalananda에게 감사드립니다).
find . -type f -print0 | sort -z | tr '\0' '\n'
답변3
현재 디렉토리의 모든 하위 디렉토리에 있는 모든 파일을 파일 이름별로 정렬하여 나열하려면 find 명령을 사용하십시오.
find . -type f -exec basename {} \; | sort