سؤال كيف يمكنني العثور على ملف عن طريق اسم الملف في نظام التشغيل Mac OSX؟


أرغب في العثور على ملف على Macbook الخاص بي مع اسم الملف: abc.dmg. لقد حاولت استخدام الأضواء ، لكنها لم تعثر عليها. عندما جربت واستخدمت: find -name abc.dmg -path /، حصلت على أخطاء مرة أخرى.

ما هي الصيغة الصحيحة للعثور على ملف عن طريق اسم الملف مع الأمر find في جهاز Mac OSX؟


84
2017-12-28 17:42


الأصل


@ الأسئلة VxJasonxV أبل هي 100 ٪ حول الموضوع للمستخدم سوبر ، وليس هناك حاجة حقيقية لنقل كل سؤال أبل هناك. ومع ذلك ، سيتم تحريك أسئلة iPhone أو iPad عند / إذا لزم الأمر. - BinaryMisfit
لم يكن هذا سببًا كبيرًا لكونه خارج الموضوع ، ولكن حقيقة أن هناك موضوعًا / موقعًا أكثر تحديدًا لهذا الموضوع العام. - VxJasonxV
Diago: لقد كان هناك أي نقاش حول هذا الموضوع في الفوقية أو الدردشة؟ أتساءل فقط لأن تطبيق AFAIK apple.SE سوف يتم طرحه من الإصدار التجريبي قريبًا جدًا ، لذلك سيكون من الجيد الحصول على الجميع في نفس الصفحة. - Robert S Ciaccio
calavera. مناقشة قديمة إلى حد ما ولكن يمكن العثور عليها هنا. كل من Apple SE و Ubuntu SE و Linux SE موجودون هناك لتكريم المستخدم الممتاز ، ولكننا لا نريد بأي حال من الأحوال إجبار المستخدمين على التحرك. أفضّل طرح أسئلة Apple هنا بدلاً من Apple ، حيث أستخدم 3 أنظمة تشغيل مختلفة. إذا كان لدي سؤال محدد للغاية ، فسأطرحه على موقع أكثر تخصصًا. - BinaryMisfit


الأجوبة:


في أبسط صورها ، find يأخذ معلمة واحدة: المسار. في شكله المفيد فعلاً ، يأخذ المسار متبوعًا بمعايير تضييق.

وبالتالي ، تريد:

  • find (البرنامج)
  • / (الطريق)
  • و -name abc.dmg (المعايير).

find / -name abc.dmg


117
2017-12-28 17:45



قد تحصل على إذن لنفي نوع الأخطاء عند البحث في محرك الأقراص بأكمله ولكن يمكن تجاهلها إلا إذا كنت تتوقع أن يكون الملف في مجلد مقيد. إذا كان الأمر كذلك استخدام سودو find / -name abc.dmg - Chris Nava
حاول ذلك ، ولكن لا نتيجة. - SPRBRN
من المفترض أن لا يكون لديك ملف باسم abc.dmg على جهاز الكمبيوتر الخاص بك. يمكنك استخدام -iname بدلاً من -name لجعل حالة البحث غير حساسة. أشك بشدة في أنك تبحث بالفعل عن "abc.dmg" ، وبالنظر إلى حقيقة (من المفترض) ، من الصعب إخبارك عن مشكلتك دون الحصول على التفاصيل الفعلية. - VxJasonxV
@ rxt: إذا لم تجده تجده ، فهو ليس موجودًا ... - Robert S Ciaccio
وبالنظر إلى أن تقرير OP قد حاول البحث في نص السؤال ، تجدر الإشارة إلى أن ترتيب الحجج ل find  القضايا. إذا يجب أن يكون find [path]+ [selection, grouping, and actions]. - dmckee


find . -name '*.csv' على سبيل المثال عملت بالنسبة لي مع أحرف البدل. OP يمكن أن تستخدم أيضا find . -name '*.dmg' للتحقق من دليله الحالي ، على افتراض أنه كان في /.


16
2017-10-27 14:11





ال mdfind يستخدم الأمر قاعدة بيانات Spotlight

http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html


7
2017-12-28 19:21



لكن Spotlight لا يعثر عليها ، حسب سؤال OP الأصلي. - VxJasonxV


يمكنك استعمال ال locate أمر.

locate abc.dmg

6
2017-12-28 17:44



لاحظ ال osx العلامة. لا يتم ملء slocate db افتراضيًا. - VxJasonxV
حاول ذلك ، بعد إنشاء قاعدة البيانات ، ولكن أي نتيجة. - SPRBRN
إذا locate و mdfind كلاهما أخفق ، فالاحتمالات هي أن الملف ليس موجودًا على جهازك. أو لم يذكر اسمه كيف تعتقد أن اسمه. ربما البحث عن جميع DMGs قد يكون خطوتك القادمة؟ - peelman


أبسط طريقة (التي أنا متأكد من أنك قد جربتها بالفعل ، ولكن مهلا ، دعني أضيفها إلى الموضوع على أي حال) هي إدخال abc.dmg في مربع البحث في أعلى يمين أي نافذة مكتشف ، ثم حدد "ملف الاسم "من الخيارات في شريط البحث الذي يظهر.

لا حاجة للمحطة.

تذكر أيضًا أن Spotlight لا يفهرس سوى الأدلة المحددة في لوحة تحكم Spotlight panel وقد لا يكون abc.dmg في أحد هذه الأدلة.

صحّحني إذا كنت مخطئًا ، لكنني أعتقد أن الأمر find بحاجة إلى معرفة ما يتم إخراجه:

find / -name abc.dmg -print

... يجب طباعة أي نتائج إلى المحطة الطرفية (بما في ذلك أخطاء الأذونات).

إذا كنت لا ترغب في الحصول على أخطاء في إذن وتريد البحث عن أدلة مستخدم أخرى ، فعليك بعد ذلك:

sudo find / -name abc.dmg -print

3
2017-12-28 22:53





يمكنك استخدام وظائف سطر الأوامر التالية للبحث عن الملف ذي الصلة وفتحه بسرعة. أجد هذا أسهل من كتابة سلسلة طويلة من الاستعلام في نافذة الأضواء.

إضافة الوظائف التالية في ~/.bash_aliases.

# find any item matching search query in file name
spot(){
  mdfind "kMDItemDisplayName=='*$1*'cd";
}

# restrict to files under (recursive) a specific path 
findpaper(){
    mdfind -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd";
}

# default to open the first entry unless 2nd positional argument is given
openpaper(){
    FILEID=$(printf "%sp" ${2:-1})

    open "$(mdfind -name -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd" | sed -n "${FILEID}")"

}

الآن ، سواء source ~/.bash_aliases أو فتح وظائف تحميل محطة جديدة. للبحث عن الملفات مع الكلمات ، فطيرة و 2016 في أي مكان في اسم الملف ، افعل

spot pie*2016 #or
spot 2016*pie

ليست هناك حاجة للإضافة أو إلحاق * إلى استعلامك كنمط البحث ، '*$1*' بالفعل علامات دخول بطاقة البرية في بداية ونهاية الاستعلام الخاص بك. إضافي cd غير حساس لحالة الأحرف ويتجاهل علامات التشكيل ، على سبيل المثال ، fred سيعود كلا من فريديريك وفريدريك.

findpaper سيقيد البحث على النتائج تحت مسار محدد (متكرر) بينما openpaper pie*201 سيفتح نتيجة بحث (أو أول نتائج متعددة) أو openpaper pie*201 3 سيفتح دخول النتيجة الثالثة. لتجنب فتح البرامج النصية bash أو الملفات الأخرى غير الوثيقة ، يجوز لك تقييد محتويات الملف بواسطة سمات بحث إضافية. نرى صيغة تعبير استعلام البيانات الوصفية للملف و https://ss64.com/osx/mdfind.html لاستخدام عوامل تشغيل البحث الأخرى.


1
2018-02-09 04:28