Tìm kiếm Mac thông qua Terminal?


22

Có bất kỳ lệnh nào để tìm kiếm máy Mac của bạn bằng thiết bị đầu cuối không? Tôi đã thử sử dụng grep để tìm kiếm nhưng có vẻ như không phản hồi và không có gì xuất hiện.

Ví dụ: tôi sẽ gõ "grep Files" (Tên thư mục) và nó chỉ in một dòng trống và không có gì xảy ra.



Tôi quan tâm đến việc tìm kiếm thông qua tất cả các loại tệp; Không nhất thiết phải loại trừ các tệp văn bản nhưng không chỉ các tệp văn bản.
JFW

Câu trả lời:


21

Bạn cũng có thể sử dụng mdfindlệnh để thực hiện tìm kiếm với Spotlight. Thêm thông tin ở đây .

Sử dụng mdfind -name searchtermđể lấy các tập tin với tên searchterm. Sử dụng mdfind searchtermđể thực hiện tìm kiếm về tên tệp và nội dung.


25

Nếu bạn chỉ muốn tìm tệp có tên nhất định, hãy sử dụng find

Trang người đàn ông có thể được tìm thấy TẠI ĐÂY hoặc bằng cách gõ man findtại dấu nhắc thiết bị đầu cuối.

Về cơ bản, find sẽ đệ quy tìm kiếm một tiêu chí đáp ứng tệp bạn chỉ định. Ví dụ đơn giản nhất:

find . -name file_name -print

Điều đó sẽ tìm kiếm một tệp có tên "file_name" bắt đầu trong thư mục hiện tại và tìm kiếm bên dưới và in các tệp có tên đó.

find ~ -name ".DS_Store" -delete

Điều đó sẽ tìm thấy tất cả các tệp .DS_Store và xóa chúng.

Bạn có thể tìm kiếm theo tên, regex, ngày. Bạn có thể hành động trên tệp theo bất kỳ cách Unix nào với -execvị ngữ.

Bạn cũng có thể sử dụng find như là khởi đầu của một chuỗi hành động phức tạp hơn. Thí dụ:

find . -type f -print | egrep -i '\.m4a$|\.mp3$'

Sẽ tìm thấy tất cả các tệp có phần mở rộng .m4a hoặc .mp3

find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l

Sẽ cung cấp cho bạn một số lượng các tập tin.


Nếu -printlà vị ngữ duy nhất, nó có thể được bỏ qua; Ngoài ra, có hình cầu đơn giản có sẵn. Do đó, việc tìm tất cả các .txttệp trong một thư mục foosẽ được thực hiện vớifind foo -name \\*.txt
Norman Gray

@yoshi: Điều đó hoàn toàn sai. Gõ find .IS đệ quy từ cwd. Hãy thử gõ find .vào thư mục gốc của bạn!
vẽ

Xấu của tôi có thể thề đó không phải là đệ quy nhưng có lẽ máy chủ đã chocked -shrug-
Nuala

5

Nếu bạn muốn tìm kiếm trong toàn bộ thư mục, chỉ cần sử dụng -r trên grep:

grep -r pattern folder/to/search

Với find, bạn cũng có thể sử dụng xargs:

find folder/to/search -name '*.txt' | xargs grep pattern

hoặc để đảm bảo rằng bạn tìm kiếm hai tệp cùng một lúc và do đó có tên tệp được chỉ định:

find folder/to/search -name '*.txt' | xargs grep -n2 pattern

2

grepmong đợi cả một mô hình và một tập tin. Nếu một cái bị thiếu thì nó sử dụng những gì được truyền dưới dạng mẫu và chờ dữ liệu tìm kiếm thông qua đầu vào tiêu chuẩn.

Nếu bạn muốn sử dụng một tập tin phức tạp hơn thì hãy sử dụng find.

find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print

Về cơ bản tôi chỉ muốn nó tìm các tệp có tên mà tôi nhập vào lệnh.
JFW

Trong trường hợp đó, bạn không cần sử dụng -execvị ngữ trong find.
Ignacio Vazquez-Abrams
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.