Làm cách nào để tìm kiếm tất cả các thư mục con để tìm một tên có tên nhất định?


12

Giả sử tôi có một thư mục cấp cao nhất được gọi /dirvà nhiều thư mục con. Làm cách nào để tìm kiếm thư mục con /dirđể tìm thư mục được gọi x/x/dir/x/x/x/target?

Câu hỏi này tương tự, nhưng không chính xác những gì tôi đang tìm kiếm: tìm lệnh cho các thư mục con nhất định .

Tôi không tìm kiếm các tập tin, chỉ là các thư mục với một tên cụ thể.

Câu trả lời:


17

Hãy thử find /dir -type d -name "your_dir_name".

Thay thế /dirbằng tên thư mục của bạn và thay thế "your_dir_name"bằng tên bạn đang tìm kiếm.

-type dsẽ nói findđể tìm kiếm các thư mục mà thôi.


1

Để có giải pháp tổng quát hơn về việc tìm một hoặc nhiều thư mục và tìm kiếm chúng cho một cái gì đó như tìm địa chỉ email cũ trong kho git, hãy xem mẫu sau:

find . -type d -name .git -print0|\
    xargs -0r -I {} find {} -type f -print0 |\
    xargs -0r grep -e 'my.old@email.address'

1
echo **/target

hoặc để có được một trận đấu trên mỗi dòng:

printf %s\\n **/target

Điều này làm việc ra khỏi hộp trong zsh. Trong bash, bạn cần chạy shopt -s globstartrước và coi chừng điều này cũng đi qua các liên kết tượng trưng đến các thư mục. Trong ksh93, bạn cần chạy set -o globstartrước.

Nếu bạn muốn chỉ khớp các thư mục hoặc các liên kết tượng trưng cho các thư mục, hãy thêm một dấu /(tức là **/target/). Trong zsh, để chỉ khớp các thư mục nhưng không liên kết tượng trưng đến các thư mục, hãy thực hiện điều đó **/target(/).

Trong bất kỳ shell nào, bạn có thể sử dụng findlệnh:

find . -name target

Trên Linux và Cygwin, .tùy chọn này. Nếu bạn muốn chỉ khớp các thư mục, thêm -type d.

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.