find . -type d
시작점 아래의 모든 디렉토리를 찾는 데 사용할 수 있습니다. 그러나 현재 디렉토리 ( .
)도 반환 하므로 원하지 않을 수 있습니다. 어떻게 제외 할 수 있습니까?
답변
find . ! -path . -type d
이 경우 ( .
)의 경우 골프보다 mindepth
솔루션 (24 vs 26 자) 보다 낫습니다 !
.
다른 디렉토리를 제외하려면 골프의 성능이 떨어지고 DRYness에 대한 변수가 필요합니다.
D="long_name"
find "$D" ! -path "$D" -type d
!
와 사이의 의사 결정 트리 -mindepth
:
- 스크립트?
!
휴대 성을 위해 사용하십시오 . - GNU 대화식 세션?
- 제외
.
? 동전을 던져. - 제외
long_name
? 사용하십시오-mindepth
.
- 제외
답변
파라미터에 find
의해 재귀 깊이를 제어 할 수있을 뿐만 아니라, 해당 -maxdepth
파라미터를 사용하여 깊이를 “상단”으로 제한 할 수도 있습니다 -mindepth
. 따라서 실제로 필요한 것은 다음과 같습니다.
find . -mindepth 1 -type d
답변
find ./* <...>
첫 번째 수준의 도트 파일을 무시하지 않아도되는 경우 사용 합니다 ( *
글로브는 기본적으로 bash에서 이것과 일치하지 않습니다-shopt 내장의 ‘dotglob’옵션 참조 : https://www.gnu.org/software/bash /manual/html_node/The-Shopt-Builtin.html ).
이클립스 tmp # find. . ./화면 ./screen/.testfile2 ./.X11-unix ./.ICE-unix ./tmux-0 ./tmux-0/ 기본
이클립스 tmp # find ./* ./화면 ./screen/.testfile2 ./tmux-0 ./tmux-0/ 기본
답변
글쎄, 간단한 해결 방법도 있습니다 (솔루션은 Windows git bash에서 작동하지 않았습니다)
find * -type d
성능이 좋지는 않지만 일을 끝내고 때로는 필요한 일입니다.
[편집] : @AlexanderMills가 언급했듯이 루트 위치에 ./.hidden
숨겨진 디렉토리는 표시되지 않지만 숨겨진 하위 디렉토리 (예 :)는 표시됩니다 ./folder/.hiddenSub
. [Windows에서 git bash로 테스트]