현재 경로의 .git/ 디렉토리 외부 디렉토리만 나열하고 싶습니다.
나는 이것을 시도하고 있습니다 :
find . -path "**/.git" -prune -o -print -type d
.git 디렉터리는 제외되지만 코드 조각에는 파일도 나열됩니다. 그러나 그것은 내가 지정한 것과 같지 않아야 합니다 -type d
. 이 find
유틸리티를 제가 설명한 대로 작동하게 하려면 어떻게 해야 합니까 ?
답변1
-print
-type d
이전 에 사용했으므로 find
첫 번째 표현식을 만족하지 않는 모든 항목이 인쇄됩니다.
당신은 그들을 교환하고 싶습니다 :
find . -path '*/.git' -prune -o -type d -print
또는 생략할 수 있도록 술어를 사용하십시오 -print
.
find . ! \( -path '*/.git' -o -path '*/.git/*' \) -type d
또한 별표는 하나만 사용해야 하며 */.git
, 별표 두 개는 **
패턴 일치에 특별한 의미가 없습니다 find
. -name
대신 다음을 사용하면 더 간단하고 이식성이 뛰어나며 약간 더 빠르게 만들 수 있습니다 -path
.
find . -name .git -prune -o -type d -print
답변2
find
명령에 대한 지식이 부족하여 덜 효율적이지만 아마도 똑같이 유용하고 아마도 더 읽기 쉬운 한 줄을 사용했습니다 grep
.
find . -type d | grep -v "/\.git"