특정 하위 디렉토리에 대한 find 명령


17

하자 내가 디렉토리가 있다고 가정 해 dir세 개의 서브 디렉토리를 dir1... dir3. 그리고 내부에는 많은 파일과 다른 하위 디렉토리가 있습니다.

내부에서 파일을 검색하고 *.c끝나고 말하지만 하위 디렉토리 "dir / dir2"와 모든 하위 디렉토리에서만 검색하고 싶습니다. 어떻게 공식화 할 수 있습니까?

내가 있다고 가정하면 dir/:

find . -name "*.c"

모든 디렉토리에서 검색합니다.

어떻게 제한 dir2합니까?

답변:


11

찾기는 유효한 경로를 허용하므로

find ./dir2 -name '*.c'

트릭을해야합니다

는 IF dir디렉토리는 /home/user/dir전체 경로를 찾아 줄 수

find /home/user/dir/dir2 -name '*.c'

17

다음 대신에 -path매개 변수를 사용할 수도 있습니다 .find-name

find . -path "dir2/*.c"

이를 통해 직접 서브 디렉토리 (EG)가 아닌 dir2경우에도 파일을 찾을 수 있습니다 dir2.

# find . -path "*/dir2/*.c"
./dir_a/dir2/file.c
./dir_b/dir2/file.c

4

넌 할 수있어 find dir2 -name '*.c'

당신은 또한 할 수 있습니다 (cd dir2; find -name '*.c')

dir1이 아닌 dir3을보고 싶었지만 dir2는 할 수 없었습니다. find {dir1,dir3} -name '*.c'


3
마지막 명령에서는 중괄호가 필요하지 않습니다. find dir1 dir3 -name \*.c잘 작동합니다.
KeithB

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.