ฉันจะใช้คำสั่ง find ได้อย่างมีประสิทธิภาพมากขึ้นได้อย่างไร?


15

ฉันอยากรู้ว่าวิธีที่ดีที่สุดในการใช้คำสั่ง find อย่างมีประสิทธิภาพคืออะไร

โดยทั่วไปฉันใช้find [filename] [dir]ซึ่งทำให้ฉันมีรายชื่อไฟล์จำนวนมากไม่มีวิธีใดที่เกี่ยวข้องกับการค้นหาของฉัน

ฉันเพียงต้องการค้นหาไฟล์หนึ่งไฟล์ในไดเรกทอรีหนึ่ง ๆ คำสั่งสำหรับสิ่งนั้นคืออะไร?

คำตอบ:


24

คุณมักจะบอกว่าจะเริ่มค้นหาที่ไหนและจะหาอะไรดี ดังนั้นไวยากรณ์สำหรับเส้นทางที่จะค้นหาและสิ่งที่คุณพยายามค้นหาจริงนั้นแตกต่างกัน

สำหรับกรณีการใช้งานที่คุณพูดถึงสมมติว่าคุณต้องการค้นหาpasswdไฟล์ใน/etc:

find /etc/ -name passwd

คุณกำลังจะบอกว่า "เริ่มต้นใน ฯลฯ มองหาไฟล์ที่มีชื่อเป็นpasswd

หากคุณไม่ได้ระบุเกณฑ์ (หรือ "ตัวเลือก" ใน find parlance) สิ่งที่ find find คือจะเริ่มในพา ธ (หรือพา ธ ) ที่คุณระบุและค้นหาไฟล์และไดเรกทอรีทั้งหมดภายใต้แบบเรียกซ้ำ ตัวเลือก "กรอง" ไฟล์เหล่านั้นเพื่อ จำกัด สิ่งที่คุณกำลังค้นหา

ค้นหาไฟล์ JPG ทั้งหมดได้ทุกที่ในระบบไฟล์ของคุณ:

find / -name "*jpg" 

แนะนำให้ใช้อัญประกาศในตัวเลือกของคุณเพราะมิฉะนั้นการขยายตัวของเชลล์อาจทำให้คุณปวดหัว

ค้นหาไฟล์ PDF ใด ๆ โดยไม่คำนึงว่าเป็นตัวพิมพ์ใหญ่ในเอกสารหรือดาวน์โหลด

find Documents/ Downloads/ -iname "*pdf"

หากคุณทำman findและเลื่อนลงไปที่ TESTS คุณจะพบ "เกณฑ์" ทั้งหมดที่พบที่สามารถใช้เพื่อ จำกัด การค้นหาของคุณ คุณสามารถค้นหาไฟล์ที่มีชื่อไฟล์เฉพาะเป็นเจ้าของโดยผู้ใช้หรือกลุ่มเฉพาะมีสิทธิ์ไฟล์เฉพาะเป็นประเภทเฉพาะ (เช่น-type dจะค้นหาเฉพาะไดเรกทอรีในขณะที่-type fจะค้นหาเฉพาะไฟล์ธรรมดาไม่รวมไดเรกทอรี) ไฟล์ใหม่หรือเก่ากว่า จำนวนวัน (หรือนาที) เฉพาะไฟล์ที่ว่างเปล่าที่สามารถเรียกใช้งานได้และอื่น ๆ

ในหน้า man ของ find คุณจะพบส่วนที่เรียกว่า ACTIONS ซึ่งสามารถไปตามเกณฑ์และจะถูกเรียกใช้โดยไฟล์ใด ๆ ที่ตรงกับเกณฑ์ทั้งหมด ดังนั้นคุณสามารถfindทำสิ่งต่าง ๆ เช่นการลบไฟล์ที่พบดำเนินการคำสั่งโดยพลการกับพวกเขาและ

แต่แน่นอนว่าไวยากรณ์พื้นฐานยังคงอยู่:

find [starting path(s)] [conditions or criteria]

ขอบคุณมันใช้งานได้ดี ฉันสับสนจริงๆและสิ่งนี้ช่วยให้สิ่งต่าง ๆ ตรง
Sam007

1
+1 นี่คือการแนะนำเบื้องต้นในการค้นหาและสอนวิธีการค้นหาข้อมูลเพิ่มเติม
lgarzo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.