Làm cách nào để tìm kiếm tất cả các tệp ẩn trong các thư mục ẩn bằng Terminal?


10

Tôi cần tìm một số cấu hình được chôn trong một số thư mục ẩn và không thể nhớ chúng đang ở đâu để điều hướng trực tiếp đến chúng Cmd+ Shift+ G.

Tôi đã làm một sudo find -name Foo*(chậm), nhưng không có tệp nào được trả lại trong các thư mục ẩn.

Cách dễ nhất để tìm kiếm tất cả các tập tin ẩn là gì?


Lưu ý: Việc sử dụng sudolà không cần thiết trừ khi bạn cần tìm kiếm trong các thư mục mà bạn không có quyền truy cập. Tìm kiếm trong các thư mục ẩn không yêu cầu đặc quyền nâng cao, nếu đó là lý do tại sao nó được sử dụng trong ví dụ của bạn.
Chris Trang

Câu trả lời:


14

mdfinddường như bỏ qua rất nhiều tập tin ẩn. mdfind 'kMDItemFSInvisible==1&&kMDItemFSName==filename'không liệt kê .DS_Storecác tập tin, nhưng không ví dụ .bash_history. Tôi không tìm thấy bất kỳ cách nào để tìm kiếm các tập tin trong một số thư mục ẩn như /private/etc/.

Dù sao, Tìm bất kỳ tập tin là nhanh hơn nhiều find.

Tìm bất kỳ tệp nào là chương trình dành cho Mac OS X cho phép bạn tìm kiếm tệp trên đĩa của mình.

  • Trái ngược với Spotlight, nó không sử dụng cơ sở dữ liệu mà thay vào đó sử dụng các hoạt động tìm kiếm nhanh của trình điều khiển hệ thống tệp, nếu có. Điều này cho phép bạn tìm kiếm các thuộc tính tệp như tên, ngày, kích thước, v.v., nhưng không cho nội dung tệp (sử dụng Spotlight hoặc EasyFind cho điều đó).
  • Tìm bất kỳ tệp nào có thể tìm thấy các tệp mà Spotlight không có, ví dụ: các tệp bên trong các gói và gói và trong các thư mục bên trong thường được loại trừ khỏi tìm kiếm Spotlight.
  • Cuối cùng, nó khá nhanh. Một tìm kiếm chỉ mất vài giây trên đĩa cứng hoặc SSD bên trong. Hãy cố gắng vì chính mình!

6

Giả sử rằng bằng cách ẩn tập tin, bạn có nghĩa là các tập tin có tên bắt đầu bằng dấu chấm hoặc nằm ở đâu đó trong thư mục có tên bắt đầu bằng dấu chấm chứ không phải các dạng tệp vô hình khác , lệnh sau sẽ in tên của tất cả các tệp bị ẩn. Nó chậm khi nó đi qua tất cả các tên tệp ở khắp mọi nơi trên hệ thống của bạn.

sudo find / -name '.*' \( -type d -exec find {} \; -prune -o -print \)

Giải trình:

  • -type d -exec find {} \; -prunethực thi findtrên mọi thư mục (có tên trùng khớp .*) và bỏ qua xuống thư mục đó vì -prune.
  • -type d … -o -printgây ra tất cả các thư mục không phù hợp .*để được in.

Nếu bạn đang tìm kiếm một tệp có tên hoặc mẫu cụ thể:

sudo find / -name 'Foo*' -path '*/.*'

Các */.*hoa văn trên các lực lượng đường toàn phù hợp để được dưới một thư mục ẩn.

Bạn có thể muốn thêm -xdevvào sau /để tránh truyền qua các hệ thống tập tin đặc biệt và đĩa di động.


À, cảm ơn. Và có vẻ như -x được ưa thích hơn bây giờ, vì -xdev không được dùng nữa.
McStopher cũ

4

Hãy thử locatelệnh. Trước tiên, bạn sẽ phải sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plisttạo DB xác định vị trí.


3
Thật phiền toái khi Spotlight không nhận được các tập tin ẩn / (dot-), bởi vì mdfind vượt trội hơn rất nhiều so với slocate.
Jason Salaz

2

EasyFind là một ứng dụng thay thế tuyệt vời để có được công việc làm. Nó hoàn toàn miễn phí và dễ dàng. Bạn có thể tìm kiếm văn bản trong các tập tin (thậm chí những người vô hình). <= Đây có thể là một cách dễ dàng hơn để tìm tập tin cấu hình của bạn.

Bạn có thể lấy nó từ App Store https://itunes.apple.com/us/app/easyfind/id411673888?mt=12

Disclaimer: Tôi không liên kết với các nhà phát triển.


Không hoạt động trên ổ đĩa APFS định dạng.
Victor Engel
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.