سؤال ما هو ما يعادل أمر Linuxb المحدود لنظام التشغيل Mac؟


إذا كنت ترغب في استخدام locate الأمر على جهاز لينكس ، أنا عادة أركض sudo updatedb أولا لتحديث قاعدة البيانات. يمكنني تشغيل locate الأمر على OS X 10.5 ولكن لا أستطيع العثور عليها updatedb. ما هو updatedb المقابلة لجهاز الماك؟


219
2018-02-16 15:23


الأصل


حسن upatedb وتحديد موقع أشياء لطيفة ولكنها تتطلب تشغيل updatedb بانتظام (إما updatedb يعمل بانتظام وهذا يبطئ النظام الخاص بك في أوقات غير ملائمة ، أو تحديد موقع إشارات إلى الملفات التي لم تعد هناك بعد الآن). لذا أعتقد أنه بدلاً من تحديد الموقع / تحديثه قد يكون من الأفضل التعرف على (الأكثر قوة). - amo-ej1
في حين أن البحث مفيد للعديد من الأشياء ، إلا أنه يجب عليه المرور عبر نظام الملفات في كل مرة. إذا كنت تستطيع تضييق الأماكن التي تبحث عنها ، فلا بأس بذلك. ميزة تحديد الموقع هي التي تحتفظ بقاعدة بيانات خاصة بها ، وبالتالي لا تحتاج للبحث في كل مرة. هذا مهم بشكل خاص مع أنظمة الملفات الكبيرة و / أو البعيدة. أعتقد أن لكل منها مكانه. - KeithB
عند تشغيل لأول مرة locate في مربع OS X يخبرك بتشغيل sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist. - Török Gábor
اعتمادا على ما تحتاج إلى استخدامه locate ل ، قد تجد أنه أكثر ملاءمة لاستخدام واجهة سطر الأوامر إلى Spotlight ، mdfindنظرًا لأن قاعدة بيانات Spotlight تكاد تكون دائمًا ، وتوفر وظائف أكثر بكثير من تحديد موقعها. man mdfind - Paul R


الأجوبة:


انها locate.updatedb على ماك.

sudo /usr/libexec/locate.updatedb

لمزيد من المعلومات انظر تحديد موقع صفحة man.updatedb.


308
2018-02-16 15:27



أن man الصفحة أيضا يدعي: يتم تشغيلها عادةً مرة واحدة في الأسبوع من خلال الوظيفة /System/Library/LaunchDaemons/com.apple.locate.plist. (و man locate يخبر أحد عن هذا البرنامج النصي: /usr/libexec/locate.updatedb برنامج نصي لتحديث قاعدة البيانات موقع) - Arjan
@ أرجان: يجب أن يتم تشغيله مرة واحدة في الأسبوع ، ولكن الافتراضي هو تعطيل والوقت الذي ينبغي القيام به هو 03:00 يوم الأحد (أو شيء من هذا القبيل) ، وهو أمر غير مفيد حقا :) - Studer
على لينكس أنا عادة ما تعمل sudo ionice -c3 updatedb الذي يروي updatedb لمشاركة تحكم i / o بشكل جيد (io nice) ولكن لا أعتقد أن هذا الأمر متوفر على Mac. أنا أيضا أفتقد وجود -r علم التعبير العادي الذي يمكن استخدامه مع موقع جنو ، على الرغم من أنني لست متأكدًا من رغبتي في استخدام البيرة وتثبيت موقع جنو المذكور بواسطةGrogs - cwd
مثال بديل macosx إلى "تحديد موقع (-r)" و "updatedb" الذي يستخدم الأضواء ("-i" اختياري بالطبع): mdfind -name "mp4" | egrep -i "^ / Users. * Downloads /.* Stuff" - michael
أيضا ، إذا كنت لا العثور على الملفات التي تتوقع ، لاحظ هذا التحذير ذات الصلة من قسم BUGS في 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


يمكنك ان تفعل sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb لتصنع updatedb الأمر متاح.


81
2017-10-18 22:29



هيه ، لقد نشرت هذا كتعليق .. ثم رأيتك تقول هذا. وأعتقد أن هذا هو وزارة الدفاع لطيفة صغيرة لجعل. :) - James T Snell
أو اسم مستعار في ملفك .bash_profile - Jim Johnson


شخصيا ، أنا فقط تثبيت findutils (استخدام MacPorts أو البيرة).

ثم لديك موقع جنو و updatedb.

updatedb لن يعمل بدون sudo.

أنا شخصيا أفضل أن يكون لكل مستخدم على الرغم من ذلك ؛ إذا كنت sudo سوف تعرف المستخدمين الآخرين أسماء / مواقع جميع الملفات الخاصة بك.

لدي مهمة كرون للتشغيل:

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

وفي .zshrc .bashrc / .bashprofile:

export LOCATE_PATH="~/tmp/locatedb"


19
2017-12-04 02:27



المكسرات تثبيت المشرفة على OS X مافريكس أعطاني gupdatedb الأمر ، وليس updatedb واحدة. لسوء الحظ أعطاني هذا الأمر خطأ موصوف هنا (حيث يتم الإشارة إلى إجابة SO الخاصة بك). في النهاية كنت مستعارة updatedb إلى LC_ALL=’C’ sudo updatedb كحل بديل ، ولكن لا أعرف ما إذا كان هذا الحل طويل الأمد أم لا. - David Rivers
إضافة /opt/local/libexec/gnubin في بداية مسارك ، إذا كنت تريد coreutils و findutils المثبتة بواسطة macports لتكون متاحة مع أسمائهم الأصلية (وليس لهم gالإصدارات المسبقة). - Ioannis Filippidis


إذا قمت بتحديد موقع دون تحديث قاعدة البيانات أولاً ، فلديك فرصة لرؤية طريقة OS الموصى بها من خلال مخرجاتها.

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