ฉันอยากพบไฟล์บน 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
ครั้งเดียวจากนั้นนำผลลัพธ์ที่บันทึกซ้ำมาใช้ซ้ำหลายครั้งโดยไม่ต้องค้นหาระบบไฟล์ซ้ำแล้วซ้ำอีก ข้อดีที่เป็นไปได้นี้ไม่ได้เน้น