Cảm ơn bạn @ nin9th vì đã chỉ ra locate
lệnh dưới dạng một tùy chọn. Dưới đây là một vài quan sát bổ sung.
Kết hợp một phần và nhiều cụm từ tìm kiếm
Tôi thường có các thư mục mà tôi chỉ có thể nhớ một phần tên của các tệp và thư mục. Và các thư mục có thể không nhất thiết phải nằm trong thư mục cha ngay lập tức (nghĩa là nó có thể là thư mục mẹ của thư mục mẹ). Một cách để thực hiện tìm kiếm khớp một phần kiểu boolean là kết hợp grep
các lệnh đường ống . Ví dụ:
locate AB | grep readme
would pipe ( |
) tất cả các đường dẫn khớp AB vào grep
. Các đường dẫn còn lại cũng sẽ phù hợp readme
. Vì vậy, điều này sẽ phù hợp ABC/foo/readme.txt
, ABC/foo/readme.md
và ABC/readme.txt
.
Trường hợp tìm kiếm không nhạy cảm
Tìm kiếm tiêu điểm dường như không phân biệt chữ hoa chữ thường có vẻ thuận tiện. Đối với hành vi tương tự với locate
và grep
sử dụng -i
cờ.
locate -i AB | grep -i readme
grep
các lệnh có thể được áp dụng nhiều lần để lọc thêm kết quả.
Chọn một đường dẫn từ danh sách
Trong một số trường hợp, thậm chí sau vài lần greps, tôi thấy rằng tôi vẫn có thể bị bỏ lại với một số ít các trận đấu và tôi chỉ muốn chọn một trong số chúng từ danh sách. Có nhiều cách khác nhau để chọn một dòng theo số. Dưới đây là một vài tùy chọn để chọn ví dụ dòng 4 của một số danh sách các đường dẫn từ mộtlocate search
locate AB | grep readme | awk 'NR==4'
Mở một đường dẫn đã chọn
Như @nineths lưu ý sau khi có được một tệp duy nhất, đầu ra có thể được mở bằng một ứng dụng mặc định:
locate foo | xargs open
hoặc với một chương trình được chỉ định trên đường dẫn, chẳng hạn như Vim
locate foo | xargs mvim
xargs
không hoạt động, ít nhất là theo mặc định, nếu đường dẫn bao gồm một khoảng trắng. Một tùy chọn khác là gửi đường dẫn đến bảng tạm và dán nó vào đâu đó (ví dụ: vào hộp thoại tìm kiếm Alfred hoặc hộp thoại Tìm đến thư mục).
locate foo | pbcopy
Thay thế cho lựa chọn và mở dòng lệnh
Có lẽ có một số lựa chọn thay thế cho việc sử dụng dòng lệnh để chọn và mở một đường dẫn từ danh sách các đường dẫn được trả về.
- Trong iTerm2 giữ phím lệnh và nhấp vào đường dẫn URL hoặc tệp / thư mục sẽ mở URL hoặc tệp trong ứng dụng mặc định.
Tùy biến vị trí
Hướng dẫn này từ Geek Stuff thảo luận về các tùy chỉnh khác nhau cho locate
lệnh (ví dụ: lọc ra các thư mục và kiểu tệp nhất định).
Tiềm năng sử dụng mdfind thay thế
Nói chung, tất cả các ví dụ sử dụng định vị ở trên có thể được thay thế bằng mdfind
.
locate
thường tham chiếu các tệp hệ thống bổ sung trong khi mdfind
truy cập các tệp được lập chỉ mục bởi Spotlight. mdfind
là trường hợp không nhạy cảm theo mặc định, mà tôi thường thấy thuận tiện. mdfind
cũng có các tùy chọn tìm kiếm bổ sung, ví dụ: bạn có thể thêm kind:fol
cho các thư mục. Sự khác biệt chính là mdfind
chỉ tìm kiếm tên tập tin. Do đó, nếu thông tin đường dẫn đang được sử dụng để giới hạn tìm kiếm, thì thông tin đó phải xuất hiện trong các grep
bộ lọc đường ống tiếp theo .
Ví dụ: nếu tôi muốn tìm một thư mục có tên là 2012
nơi subjectname
xuất hiện trong đường dẫn thì sau đây sẽ hoạt động
mdfind name:2012 kind:fol | grep subjectname
Lưu ý rằng name:
dường như là bắt buộc vì văn bản là tất cả các số.
Tóm tắt những suy nghĩ
- Tốc độ :
locate
Lệnh chạy nhanh hơn find
lệnh nhưng với tốc độ tương tự mdfind
.
- Khả năng lọc : Nếu bạn có thông tin khớp một phần trên tên tệp hoặc bạn muốn sử dụng các công cụ tìm kiếm bổ sung
mdfind
có vẻ tốt hơn (giả sử tệp được Spotlight lập chỉ mục).
Nhìn chung, tất cả các cách tiếp cận này có vẻ hơi khó hiểu và có một số lượng chi phí cú pháp không cần thiết.
find
nhưng không phải làlocate
lệnh.