dir
세 개의 하위 디렉터리가 있고 그 안에 많은 파일과 기타 하위 디렉터리가 있는 디렉터리가 dir1
있다고 dir3
가정 해 보겠습니다 .
내부에 있는 파일을 검색하고 싶습니다(예: 엔딩이 있다고 가정) *.c
. 하지만 하위 디렉터리 "dir/dir2"와 모든 하위 디렉터리에서만 검색하고 싶습니다. 어떻게 넣나요?
내가 가지고 있다고 가정 해 봅시다 dir/
:
find . -name "*.c"
모든 디렉토리에서 검색하십시오.
어떻게 제한할 수 있나요 dir2
?
답변1
대신 -path
매개변수를 사용할 수도 있습니다 .find
-name
find . -path "dir2/*.c"
dir2
이렇게 하면 직접적인 하위 디렉터리 가 아니더라도 dir2
파일을 찾을 수 있습니다 . EG:
# find . -path "*/dir2/*.c"
./dir_a/dir2/file.c
./dir_b/dir2/file.c
답변2
Find는 유효한 경로를 모두 허용하므로
find ./dir2 -name '*.c'
문제를 해결해야 한다
dir
디렉토리가 다음과 같은 경우 /home/user/dir
전체 경로를 찾을 수 있습니다.
find /home/user/dir/dir2 -name '*.c'
답변3
넌 할 수있어find dir2 -name '*.c'
당신은 또한 이것을 할 수 있습니다(cd dir2; find . -name '*.c')
보고 싶지만 보기 싫다면 dir1
이렇게 하세요dir3
dir2
find dir1 dir3 -name '*.c'
답변4
그룹을 검색할 때하위 디렉토리지정 용도와일드카드, 하다아니요-path
속도가 느릴 수 있으므로 이 플래그를 사용하십시오 .
tree findtest/
findtest/
|-- dir_1_
|-- dir_2_
| `-- file_2_
|-- dir_3_
| |-- dir_3_1_
| `-- dir_3_2_
| `-- file_3_2_
`-- file_0_
5 directories, 3 files
(현재 디렉터리에는 다른 많은 파일과 하위 디렉터리가 포함되어 있습니다.)
"-path"에 하위 디렉터리 와일드카드를 사용하면 속도가 느려질 수 있습니다.
time find . -path "./findtest/dir_*_/file_*_"
./findtest/dir_2_/file_2_
./findtest/dir_3_/dir_3_2_/file_3_2_
0.084u 0.699s 0:17.84 4.3% 0+0k 0+0io 0pf+0w
더 빠른 대안:
time find ./findtest/dir_*_/ -name "file_*_"
./findtest/dir_2_/file_2_
./findtest/dir_3_/dir_3_2_/file_3_2_
0.000u 0.002s 0:00.00 0.0% 0+0k 0+0io 0pf+0w