ฉันอยากพบไฟล์บน Macbook abc.dmgของฉันกับชื่อไฟล์: ฉันพยายามใช้สปอตไลท์ แต่ไม่พบ เมื่อฉันลองค้นหาและใช้: find -name abc.dmg -path /ฉันได้รับข้อผิดพลาดกลับมา
ไวยากรณ์ที่เหมาะสมในการค้นหาไฟล์ด้วยชื่อไฟล์พร้อมคำสั่ง find บนเทอร์มินัล Mac OSX คืออะไร
ฉันอยากพบไฟล์บน Macbook abc.dmgของฉันกับชื่อไฟล์: ฉันพยายามใช้สปอตไลท์ แต่ไม่พบ เมื่อฉันลองค้นหาและใช้: find -name abc.dmg -path /ฉันได้รับข้อผิดพลาดกลับมา
ไวยากรณ์ที่เหมาะสมในการค้นหาไฟล์ด้วยชื่อไฟล์พร้อมคำสั่ง find บนเทอร์มินัล Mac OSX คืออะไร
คำตอบ:
ในรูปแบบที่ง่ายที่สุดfindใช้พารามิเตอร์เดียว: พา ธ ในรูปแบบที่มีประโยชน์จริงมันใช้เส้นทางตามเกณฑ์การ จำกัด
ดังนั้นคุณต้องการ:
find (โปรแกรม)/ (เส้นทาง) และ-name abc.dmg (เกณฑ์)find / -name abc.dmg
find  find [path]+ [selection, grouping, and actions]หากจะต้อง
                    find . -name '*.csv'เช่นทำงานให้ฉันด้วยสัญลักษณ์แทน OP ยังสามารถใช้ในการตรวจสอบไดเรกทอรีปัจจุบันของเขาสมมติว่าเขาอยู่ในfind . -name '*.dmg'/
mdfindคำสั่งใช้ฐานข้อมูลสปอตไล
http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html
คุณสามารถใช้locateคำสั่ง
locate abc.dmg
osxแท็ก slocate db ไม่ได้เติมตามค่าเริ่มต้น
                    locateและmdfindทั้งสองล้มเหลวโอกาสที่ไฟล์จะไม่อยู่ในเครื่องของคุณ หรือไม่มีชื่อว่าคุณคิดอย่างไรกับชื่อ บางทีการค้นหา DMG ทั้งหมดอาจเป็นขั้นตอนต่อไปของคุณหรือไม่
                    วิธีที่ง่ายที่สุด (ซึ่งฉันแน่ใจว่าคุณได้ลองไปแล้ว แต่ขอให้ฉันเพิ่มลงในเธรดอยู่ดี) คือการใส่ abc.dmg ลงในช่องค้นหาที่ด้านบนขวาของหน้าต่างค้นหาใด ๆ จากนั้นเลือก "ไฟล์ ชื่อ "จากตัวเลือกบนแถบค้นหาที่ปรากฏขึ้น
ไม่จำเป็นต้องมีเครื่อง
โปรดจำไว้ว่าสปอตไลต์เฉพาะไดเรกทอรีดัชนีที่ระบุในแผงควบคุม Spotlight และ abc.dmg อาจไม่อยู่ในไดเรกทอรีใดไดเรกทอรีหนึ่ง
แก้ไขฉันถ้าฉันผิด แต่ฉันคิดว่าคำสั่ง find จำเป็นต้องรู้ว่าต้องเอาอะไรออก:
find / -name abc.dmg -print
... ควรพิมพ์ผลลัพธ์ใด ๆ ไปยังเทอร์มินัล (รวมถึงข้อผิดพลาดในการอนุญาต)
หากคุณไม่ต้องการข้อผิดพลาดในการอนุญาตและต้องการค้นหาไดเรกทอรีผู้ใช้อื่นให้ทำดังนี้
sudo find / -name abc.dmg -print
คุณสามารถใช้ฟังก์ชันบรรทัดคำสั่งต่อไปนี้เพื่อค้นหาและเปิดไฟล์ที่เกี่ยวข้องได้อย่างรวดเร็ว ฉันพบสิ่งนี้ง่ายกว่าการพิมพ์ชุดข้อความค้นหาแบบยาวในหน้าต่างสปอตไลท์
~/.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จะส่งคืนทั้งFrédéricและ FrEDeric
findpaperจะ จำกัด การค้นหาผลลัพธ์ภายใต้เส้นทางที่เฉพาะเจาะจง (เรียกซ้ำ) ในขณะที่openpaper pie*201จะเปิด (หรือผลลัพธ์แรกของหลายผลลัพธ์) หรือopenpaper pie*201 3จะเปิดรายการผลลัพธ์ที่สาม เพื่อหลีกเลี่ยงการเปิดสคริปต์ทุบตีหรือไฟล์อื่น ๆ ที่ไม่ใช่เอกสารคุณอาจ จำกัด เนื้อหาไฟล์โดยใช้แอตทริบิวต์การค้นหาเพิ่มเติม ดูไวยากรณ์ของนิพจน์ของแบบสอบถามข้อมูลเมตาของไฟล์และhttps://ss64.com/osx/mdfind.htmlสำหรับการใช้โอเปอเรเตอร์การค้นหาอื่น ๆ
จับรายชื่อของทุกไฟล์ในดิสก์ของคุณเป็นรูทจาก /
sudo find / &> ~/file-list.txt
sudo chown $(whoami) ~/file-list.txt
ทำการรวมไฟล์ทั้งหมดผ่าน grep เพื่อค้นหาไดรฟ์ทั้งหมด:
cat ~/file-list.txt | grep abc.dmg
ใช้นิพจน์ทั่วไปเพื่อแสดงเฉพาะไฟล์. jpg และ. dmg:
cat ~/file-list.txt | grep -E "(\.dmg|\.jpg)"
ผลลัพธ์:
Applications/Visualisations/CurvedSpaces-forMac.app/Contents/Resources/Textures/paper.jpg
... ฯลฯ แต่น่าเสียดายที่จะจับดิสก์ที่ติดตั้งทั้งหมดเพื่อให้ดีที่สุดที่จะนำ Time Machine เหล่านั้นออกซึ่งมีลิงก์จำนวนมาก ดังนั้นในหน้าต่างอื่นฉันรัน   watch tail -n 10 ~/file-list.txtซึ่งแสดงให้ฉันเห็นว่ามันขึ้นอยู่กับการแฮ็คขี้ขลาดของฉัน!
sudo find / > ~/file-list.txtดูเหมือนดีกว่าการใช้เชลล์ทั้งหมดในฐานะที่เป็นรูต (2) find *จะข้ามซ่อน (dot) วัตถุ /(ถ้ามี) (3) &>เป็นการทุบตี (4) catการใช้ประโยชน์ของ (5) จะพิมพ์เช่นgrep abc.dmg /foo/bar/123abcXdmg456/baz/whatever// สิ่งหนึ่งที่ดีที่คำตอบของคุณนำมาสู่เธรดนี้ (และคำตอบอื่น ๆ ไม่ได้) คือแนวทางที่ผู้ใช้รันfindครั้งเดียวจากนั้นนำผลลัพธ์ที่บันทึกซ้ำมาใช้ซ้ำหลายครั้งโดยไม่ต้องค้นหาระบบไฟล์ซ้ำแล้วซ้ำอีก ข้อดีที่เป็นไปได้นี้ไม่ได้เน้น