Câu hỏi Tương đương với lệnh updateb của Linux cho Mac là gì?


Nếu tôi muốn sử dụng locate lệnh trên máy Linux, tôi thường chạy sudo updatedb đầu tiên để cập nhật cơ sở dữ liệu. Tôi có thể chạy locate lệnh trên OS X 10.5 nhưng tôi không thể tìm thấy updatedb. Cập nhật tương ứng cho mac là gì?


215
2018-02-16 15:23


gốc


Vâng upatedb và xác định vị trí là những điều tốt đẹp nhưng họ yêu cầu để chạy updateb thường xuyên (hoặc updateb chạy thường xuyên và điều này làm chậm hệ thống của bạn tại thời điểm bất tiện, hoặc xác định vị trí cho thấy tài liệu tham khảo cho các tập tin mà không có nữa). Vì vậy, tôi nghĩ rằng thay vì thiết lập vị trí / updatedb nó có lẽ sẽ là tốt hơn để làm quen với (mạnh hơn rất nhiều) tìm thấy. - amo-ej1
Trong khi tìm kiếm rất hữu ích cho nhiều thứ, nó cần phải đi qua hệ thống tập tin mỗi lần. Nếu bạn có thể thu hẹp những nơi bạn đang tìm kiếm, điều đó là tốt. Ưu điểm của việc xác định vị trí là giữ cơ sở dữ liệu riêng của nó, và do đó không cần phải tìm kiếm mỗi lần. Điều này đặc biệt quan trọng với các hệ thống tập tin lớn và / hoặc từ xa. Tôi nghĩ rằng mỗi người đều có vị trí của nó. - KeithB
Khi lần đầu chạy locate trên một hộp OS X nó cho bạn biết để chạy sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist. - Török Gábor
Tùy thuộc vào những gì bạn cần sử dụng locate vì, bạn có thể thấy thuận tiện hơn khi sử dụng giao diện dòng lệnh cho Spotlight, mdfind, vì cơ sở dữ liệu Tiêu điểm gần như luôn được cập nhật và cung cấp nhiều chức năng hơn so với định vị. man mdfind - Paul R


Các câu trả lời:


nó là locate.updatedb trên máy Mac.

sudo /usr/libexec/locate.updatedb

Để biết thêm thông tin, hãy xem trang người dùng locate.updatedb.


305
2018-02-16 15:27



Cái đó man trang cũng tuyên bố: Nó thường được chạy một lần một tuần bởi công việc /System/Library/LaunchDaemons/com.apple.locate.plist. (Và man locate nói về một kịch bản đó: /usr/libexec/locate.updatedb Script để cập nhật cơ sở dữ liệu định vị) - Arjan
@Arjan: Nó nên được chạy một lần một tuần, nhưng mặc định nó bị vô hiệu hóa và thời gian khi nó nên được thực hiện là 3 giờ sáng vào ngày chủ nhật (hoặc một cái gì đó tương tự), mà không thực sự hữu ích :) - Studer
Trên Linux tôi thường chạy sudo ionice -c3 updatedb câu nói nào updatedb để chia sẻ bộ điều khiển i / o độc đáo (io đẹp) nhưng tôi không nghĩ rằng lệnh này có sẵn trên mac. Tôi cũng nhớ có -r cờ biểu thức chính quy có thể được sử dụng với GNU xác định vị trí, mặc dù tôi không chắc chắn tôi muốn sử dụng homebrew và cài đặt GNU định vị được đề cập bởi @Grogs - cwd
Ví dụ macosx thay thế để "xác định vị trí (-r)" và "updatedb" sử dụng chú ý ("-i" tùy chọn tất nhiên): mdfind -name "mp4" | egrep -i "^ / Người dùng. * Tải xuống / .* Nội dung" - michael
Ngoài ra, nếu bạn không tìm các tệp mà bạn mong đợi, lưu ý cảnh báo có liên quan này từ phần BUGS của manpage: The locate database is typically built by user ''nobody'' and the locate.updatedb(8) utility skips directories which are not readable for user ''nobody'', group ''nobody'', or world. For example, if your HOME directory is not world-readable, none of your files are in the database - Ashutosh Jindal


Bạn có thể làm sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb để làm cho updatedb lệnh có sẵn.


80
2017-10-18 22:29



Heh, tôi vừa đăng bài này như một bình luận .. Sau đó thấy bạn nói điều này. Tôi nghĩ rằng đây là một chút tốt đẹp mod để thực hiện. :) - James T Snell
hoặc đặt bí danh trong tệp .bash_profile của bạn - Jim Johnson


Cá nhân, tôi chỉ cần cài đặt findutils (sử dụng MacPorts hoặc Homebrew).

Sau đó, bạn có GNU xác định vị trí và updatedb.

updatedb sẽ không hoạt động nếu không có sudo.

Cá nhân tôi thích có một người sử dụng locationb mặc dù; nếu bạn sudo người dùng khác sẽ biết tên / vị trí của tất cả các tệp của bạn.

Tôi có một công việc cron để chạy:

updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'

Và trong tệp .zshrc .bashrc / .bashprofile của tôi:

export LOCATE_PATH="~/tmp/locatedb"


19
2017-12-04 02:27



Công cụ tìm kiếm cài đặt Brew trên OS X Mavericks đã cho tôi gupdatedb lệnh, không phải updatedb một. Thật không may lệnh này đã cho tôi một lỗi được mô tả ở đây (nơi mà câu trả lời SO của bạn được tham chiếu). Cuối cùng tôi đã bí danh updatedb đến LC_ALL=’C’ sudo updatedb như một cách giải quyết, nhưng tôi không biết đây có phải là giải pháp lâu dài hay không. - David Rivers
Thêm vào /opt/local/libexec/gnubin ở đầu đường dẫn của bạn, nếu bạn muốn coreutils và findutils được cài đặt bởi macports để có sẵn với tên ban đầu của họ (và không phải của họ g-prefixed phiên bản). - Ioannis Filippidis


Nếu bạn chạy xác định vị trí mà không cần cập nhật cơ sở dữ liệu lần đầu tiên, bạn có cơ hội xem cách được đề xuất của hệ điều hành theo đầu ra của nó.

WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:

  sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

2
2017-08-15 09:09