2012-03-28 39 views
6

Trong lệnh sau đây tôi muốn tìm kiếm chỉ chỉ các thư mục được không giấu làm thế nào tôi có thể làm điều này bằng cách sử dụng lệnh sau .Iwant để bỏ qua các thư mục ẩn trong khi tìm kiếm các tập tin logtìm kiếm lệnh chỉ thư mục không giấu

 find /home/tom/project/ -name '.log.txt' 


    ls /home/tom/project/ 
    dir1 
    dir2 
    .backup 
    .snapshot/ 
    .ignore/ 
+0

bạn có nghĩa là thư mục mà không được ẩn đi và không có cha mẹ ẩn? –

Trả lời

1

Thao tác này sẽ tìm tất cả các tệp nhưng bỏ qua những tệp bắt đầu bằng dấu chấm để ẩn tệp.

find /home/tom/project/ -type f \(-iname ".log.txt" ! -iname ".*" \) 

EDIT: Nếu những điều trên không hiệu quả, điều này sẽ thực hiện thủ thuật. Nó có một regex tốt hơn.

find /home/tom/project/ \(! -regex '.*/\..*' \) -type f -name ".log.txt" 

EDIT2:

Sau đây sẽ loại trừ thư mục ẩn nhưng sẽ tìm kiếm các tập tin ẩn mà có mô hình yêu cầu:

find /home/tom/project/ \(! -regex '.*/\..*/..*' \) -type f -name ".log.txt" 

EDIT3:

Giải pháp grep :) nếu điều này không hoạt động tôi bị mất :)

find /home/tom/project/ \(! -regex '.*/\..*/..*' \) -exec grep -l ".log.txt" {} \; 

EDIT4:

Bạn đã thử các giải pháp đơn giản chưa?

find /home/tom/project/ -type f -name ".log.txt" 

HOẶC

find /home/tom/project/ -type f -name "*" -exec grep -l ".log.txt" {} \; 
+0

Nó vẫn trỏ đến các thư mục ẩn .. – Rajeev

+0

bạn có thể cho tôi một ví dụ về các thư mục mà nó vẫn tìm thấy không? –

+0

tìm thấy: Phát hiện vòng lặp hệ thống tệp; './.snapshot/hourly.0 'có cùng số thiết bị và inode như một thư mục có 2 cấp độ cao hơn trong hệ thống phân cấp hệ thống tệp. tìm thấy: Phát hiện vòng lặp hệ thống tệp; './.snapshot/hourly.1 'có cùng số thiết bị và inode như một thư mục có 2 cấp độ cao hơn trong hệ thống phân cấp hệ thống tệp. – Rajeev

4

Hãy thử

find /home/tom/project -type d -name '.*' -prune -o -name .log.txt -print 
Các vấn đề liên quan