파일 내용 내의 하위 디렉터리를 재귀적으로 검색하고 싶지만 첫 번째 수준 하위 디렉터리에 일치하는 항목이 있는지만 신경쓰고 있습니다. 즉, 다음과 같이 주어진다:
ParentDirectory
Subdirectory1
File containing match
File not containing match
File containing match
Subdirectory2
File not containing match
File not containing match
Subdirectory3
File not containing match
Subdirectory3.1
File containing match
내가 알 필요가:
Matches:
ParentDirectory/Subdirectory1
ParentDirectory/Subdirectory3
누군가 grep이나 유사한 유틸리티를 사용하여 이를 수행하는 방법을 제공할 수 있습니까?
답변1
각 하위 디렉터리에서 find
재귀를 실행 하려면 다음을 수행하세요.grep
echo "Matches:"
find ParentDirectory -mindepth 1 -maxdepth 1 -type d \
-exec grep -rq pattern {} \; \
-and -print
-q
grep
첫 번째 일치 시 중지 옵션은
-and -print
항목이 발견된 경우에만 목차를 인쇄합니다 find
.grep
-loop를 사용하는 for
대안 :
echo "Matches:"
for d in ParentDirectory/* ; do
[ -d "$d" ] && grep -rq pattern "$d" && echo "$d"
done
두 버전 모두에 대한 출력:
Matches:
ParentDirectory/Subdirectory1
ParentDirectory/Subdirectory3