lệnh tìm cho các thư mục con nhất định


17

Hãy nói rằng tôi có một thư mục dirvới ba thư mục con dir1.. dir3. Và bên trong tôi có nhiều tập tin và các thư mục con khác.

Tôi muốn tìm kiếm một tập tin bên trong, nói với một *.ckết thúc, nhưng tôi chỉ muốn tìm kiếm trong thư mục con "dir / dir2" và tất cả các thư mục con của nó. Làm thế nào tôi có thể xây dựng điều đó?

Giả sử tôi ở trong dir/tôi có:

find . -name "*.c"

để tìm kiếm trong tất cả các thư mục.

Làm thế nào để tôi hạn chế chỉ dir2?

Câu trả lời:


11

Tìm sẽ chấp nhận bất kỳ đường dẫn hợp lệ nào vì vậy

find ./dir2 -name '*.c'

nên làm mánh khóe

Nếu dirthư mục là /home/user/dirbạn có thể cung cấp tìm đường dẫn đầy đủ

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

17

Bạn cũng có thể sử dụng -paththam số findthay cho -name:

find . -path "dir2/*.c"

Điều này có thể cho phép bạn tìm các tệp dir2ngay cả khi dir2không phải là thư mục con trực tiếp, EG:

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

4

Bạn có thể làm find dir2 -name '*.c'

Bạn cũng có thể làm (cd dir2; find -name '*.c')

Nếu bạn muốn xem dir1 và dir3 nhưng không phải dir2, bạn có thể làm find {dir1,dir3} -name '*.c'


3
Trong lệnh cuối cùng, không cần niềng răng. find dir1 dir3 -name \*.choạt động tốt
KeithB

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.