각 디렉토리로 이동하여 명령을 실행하는 루프를 만들었습니다. 그런데 폴더의 항목이 알파벳 순서가 아닌 것을 발견했습니다.
루프는 다음과 같습니다:
#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
는 뒤에 나타납니다. 10
는 2
뒤에 나타납니다 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에 대한 옵션을 활성화합니다).
또한 일반적으로 해당 순서를 선호하는 경우 numericglobsort
global( )을 켠 다음 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;