답변:
내장 된 것은없고 심지어 GNU find도 없습니다. find
예를 들어 Perl을 사용하여 슬래시 수를 기준으로 출력을 후 처리 할 수 있습니다 .
find ... | perl -e 'print sort {$a=~s!/!/! <=> $b=~s!/!/!} <>'
<>
모든 입력 행의 목록입니다.$a =~ s!/!/!g
에서 슬래시 수 $a
는 정렬 기준으로 사용됩니다.zsh를 사용할 수있는 경우 :
echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
**/*
현재 디렉토리 및 하위 디렉토리의 모든 파일을 나열합니다.oe
는 일치가 반환되는 순서를 제어합니다. 처음에 일치 경로로 설정된 REPLY
각 일치에 대해 따옴표로 코드를 실행 한 후의 값으로 정렬됩니다 REPLY
.$REPLY
는 슬래시를 제외한 모든 것을 삭제하도록 변환 된다. 따라서 결과는 깊이 1의 모든 것 (빈 결과 $REPLY
), 깊이 2의 모든 것 ( $REPLY
끝으로 이어짐 /
), 깊이 3 ( //
) 등으로 구성됩니다.내 느낌은 당신이 할 수 있다는 것입니다. grep과 그와 같은 루프가 포함되지만, 특히 찾기를 완료 할 필요가없는 경우에 대해 잘 작동합니다.
다음과 같은 이유로 리소스를 더 많이 사용합니다.
이것은 다음과 같은 이유로 좋습니다.
#! / bin / bash 깊이 = 0 찾는 동안 -mindepth $ depth -maxdepth $ depth | grep '.' 하다 깊이 = $ ((깊이 + 1)) 끝난
한 줄에 쉽게 넣을 수 있습니다 (?).
depth=0; while find -mindepth $depth -maxdepth $depth | grep --color=never '.'; do depth=$((depth + 1)); done
그러나 나는 타이핑보다 작은 스크립트를 선호합니다 ...