Làm cách nào để xác định vị trí tệp trong Spotlight bằng thư mục và tên tệp?


3

Tôi thường muốn điều hướng đến một tập tin hoặc thư mục không có tên duy nhất. Thay vào đó, thư mục mẹ kết hợp với tệp hoặc tên thư mục làm cho nó trở nên duy nhất. Đây là vài ví dụ:

  • Tôi muốn mở readme.txttrong thư mục được gọi ABCchứ không phải readme.txttrong thư mục được gọi là CDEhoặc FGH.
  • Mỗi năm tôi dạy một môn học mà các thư mục được tổ chức subjectname/2011, subjectname/2012vv Tôi muốn để có thể tìm kiếm subjectname 20122012không phải là độc đáo.

Khi tôi nhập một phần của đường dẫn và tên tệp vào Spotlight, không tìm thấy tệp. Spotlight dường như không coi thông tin đường dẫn là có liên quan đến tìm kiếm.

  • Cách nhanh chóng để điều hướng đến một tệp bằng cách sử dụng đèn chiếu khi tên của nó không phải là duy nhất nhưng bạn có biết một từ hoặc một phần từ xuất hiện trong đường dẫn của nó không?
  • Ngoài ra, có một chiến lược khác để nhanh chóng định vị tệp hoặc thư mục theo tên và từ trong đường dẫn của tệp hoặc thư mục không?

Cập nhật, tôi đã đọc rằng Spotlight xử lý đường dẫn theo một cách đặc biệt . Nó không thể được sử dụng trong việc xây dựng các tìm kiếm.

kMDItemPath
Complete path to the file. This value of this attribute can be retrieved, 
but can't be used in a query or to sort search results. This attribute can’t 
be used as a member of the valueListAttrs array parameter for MDQueryCreate 
or MDQueryCreateSubset.
Value Type:      CFString
Framework:       CoreServices/CoreServices.h
Header:      MDItem.h
Availability:    Available in OS X v10.4 and later.

Câu trả lời:


2

Nếu bạn cảm thấy thoải mái khi mở terminal, bạn có thể chạy lệnh

locate ABC/readme.txt

và nó sẽ cung cấp cho bạn đường dẫn tệp đầy đủ đến bất kỳ tệp nào trên máy của bạn có tên readme.txt trong thư mục có tên ABC.

Trong khi bạn ở đó, bạn có thể sao chép và đi qua đường dẫn làm đối số cho openlệnh và nó sẽ mở nó cho bạn.

Lấy nó một bước xa hơn bạn có thể sử dụng đầu ra của locatenhư các đối số cho openvớixargs

locate ABC/readme.txt | xargs open

Sẽ mở tất cả các tệp có ABC / readme.txt trên máy của bạn giống như khi bạn nhấp đúp vào chúng.


+1 Cảm ơn. Tôi biết về findnhưng không phải là locatelệnh.
Jeromy Anglim

1
Một điều tôi nên thêm, locateđược điều khiển từ vị trí cần được cập nhật định kỳ. Rõ ràng việc bảo trì này đã bị xóa khỏi các tập lệnh mà nó đã chạy trước ngày 10.6, bạn có thể cần phải kích hoạt nó như thế này sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist osxdaily.com/2011/11/02/ trên
9

Vâng. Lần đầu tiên tôi thử chạy locatetrên Lion, nó đã nhắc tôi chạy lệnh bạn đề cập.
Jeromy Anglim

1

Cảm ơn bạn @ nin9th vì đã chỉ ra locatelệ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 grepcá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.mdABC/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 locategrepsử dụng -icờ.

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

xargskhô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 locatelệ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. locatethường tham chiếu các tệp hệ thống bổ sung trong khi mdfindtruy cập các tệp được lập chỉ mục bởi Spotlight. mdfindlà 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. mdfindcũng có các tùy chọn tìm kiếm bổ sung, ví dụ: bạn có thể thêm kind:folcho các thư mục. Sự khác biệt chính là mdfindchỉ 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 grepbộ 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à 2012nơi subjectnamexuấ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 độ : locateLệnh chạy nhanh hơn findlệ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 mdfindcó 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.


1
Lưu ý, không có yêu cầu tệp duy nhất để xargs openbạn có thể liệt kê danh sách các tệp và nó sẽ mở từng tệp. Điều này có thể hữu ích hoặc nguy hiểm. Bạn cũng có thể chỉ định một ứng dụng để mở chúng bằng (nếu nó chưa có dòng lệnh tương đương) vớiopen -a appname
9

1

Bạn có thể muốn kiểm tra Findspot . Findspot hỗ trợ tìm kiếm đường dẫn đầy đủ để bạn có thể bao gồm tên thư mục và tên tệp trong truy vấn của mình.

Dưới đây là ảnh chụp màn hình của Findspot bằng ví dụ của bạn:

nhập mô tả hình ảnh ở đây

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.