터미널의 폴더를 알파벳순으로 정렬

터미널의 폴더를 알파벳순으로 정렬

각 디렉토리로 이동하여 명령을 실행하는 루프를 만들었습니다. 그런데 폴더의 항목이 알파벳 순서가 아닌 것을 발견했습니다.

루프는 다음과 같습니다:

#1/
#10/
#11/
#12/
#13/
#14/
#15/
#16/
#17/
#18/
#19/
#2/
#20/
#3/
#4/
#5/
#6/
#7/
#8/
#9/
...

하지만 다음을 수행해야 합니다.

#1/
#2/
#3/
#4/
...

내 스크립트

for d in */; do echo "$d"; (cd "$d" && ls); done;

답변1

간단한 방법과 폴더를 유지하려면 자릿수로 구분할 수 있습니다.

for d in ?/;  do echo "$d"; (cd "$d" && ls); done
for d in ??/; do echo "$d"; (cd "$d" && ls); done

이런 종류의 코드 중복은 확실히 좋지 않습니다. 그런데 또 "#1 #2 #3을 해야 한다"는 것 외에는 전혀 맥락을 알려주지 않았습니다.

아니면:

for d in {1..20}; do echo "$d"; (cd "$d" && ls); done

(끝에 슬래시를 추가할 수도 있습니다 {1..20}/.)

이는 모든 번호를 폴더로 가지고 있는 경우에만 의미가 있습니다.

답변2

그들을알파벳순으로. 알파벳 순서로 2는 뒤에 나타납니다. 102뒤에 나타납니다 1. 는 B뒤에 나타납니다 AB. 여기 당신이 원하는수치알파벳 순서가 아닌 순차적.

이렇게 하려면 zsh쉘(최신 버전의 macos에서는 기본 사용자 쉘이어야 함)을 사용하고 있는지 확인하고 다음을 사용하십시오.

for d in *(N/n); do (cd -- $d && print -r -- $d && ls); done

또는 다음과 같이 축약된 형식을 사용하십시오.

for d (*(N/n)) (cd -- $d && print -r -- $d && ls)

(N/n)부분은글로벌 예선:

  • N: 일치하는 항목이 없으면 오류를 보고하는 대신 확장이 비어 있습니다( nullglob이 glob에 대한 옵션 활성화).
  • /: 해당 유형의 파일만 선택목차
  • n: glob 확장의 숫자 순서를 토글합니다( numericglobsort이 glob에 대한 옵션을 활성화합니다).

또한 일반적으로 해당 순서를 선호하는 경우 numericglobsortglobal( )을 켠 다음 set -o numericglobsort을 재사용할 수 있습니다 for d in */; ....

및 은 *(/)정확히 동일하지 않습니다 */. *(/)모든 유형의 파일로 확장목차을 클릭하고 */파일 형식을 선택하세요 .목차또는디렉토리에 대한 심볼릭 링크그리고 a를 추가하므로 /( glob 한정자는 후속 한정자를 적용 가능하게 만듭니다. */)*(-/M)-뒤쪽에M심볼릭 링크 확인 및표시디렉토리 유형의 파일(여기에서는 기호 링크 확인 후 /)

답변3

다음을 수행할 수 있습니다.

for d in $(find * -type d | sort -g); do echo "$d";(cd "$d" && ls);done;

관련 정보