Android

ค้นหาคำสั่งใน linux

What the Waters Left Behind Trailer 2 (2018) Los Olvidados

What the Waters Left Behind Trailer 2 (2018) Los Olvidados

สารบัญ:

Anonim

หนึ่งในการดำเนินการที่พบบ่อยที่สุดเมื่อทำงานบน Linux คือการค้นหาไฟล์และไดเรกทอรี บนระบบ Linux มีหลายคำสั่งที่อนุญาตให้คุณค้นหาไฟล์ที่มีการ find และ locate ว่าเป็นไฟล์ที่ถูกใช้มากที่สุด

คำสั่ง locate เป็นวิธีที่เร็วและง่ายที่สุดในการค้นหาไฟล์และไดเรกทอรีโดยใช้ชื่อ

ในบทช่วยสอนนี้เราจะอธิบายวิธีใช้คำสั่ง locate

การติดตั้ง locate (ไม่พบคำสั่งค้นหา)

ขึ้นอยู่กับการกระจายและวิธีการที่ระบบได้รับการจัดแพคเกจค้นหาอาจหรือไม่อาจติดตั้งไว้ล่วงหน้าในระบบ Linux ของคุณ

ในการตรวจสอบว่ามีการติดตั้งยูทิลิตีการ locate บนระบบของคุณหรือไม่ให้เปิดเทอร์มินัลของคุณพิมพ์ locate และกด Enter หากมีการติดตั้งแพคเกจระบบจะแสดง locate: no pattern to search for specified มิฉะนั้นคุณจะเห็นสิ่งที่ต้องการ locate command not found

หากไม่ได้ติดตั้งค้นหาคุณสามารถติดตั้งได้อย่างง่ายดายโดยใช้ตัวจัดการแพคเกจของ distro ของคุณ

ติดตั้ง locate บน Ubuntu และ Debian

sudo apt update sudo apt install mlocate

ติดตั้ง locate บน CentOS และ Fedora

sudo yum install mlocate

locate งานได้อย่างไร

คำสั่งค้นหาการค้นหารูปแบบที่กำหนดผ่านไฟล์ฐานข้อมูลที่สร้างขึ้นโดยคำสั่ง updatedb ผลลัพธ์ที่พบจะแสดงบนหน้าจอหนึ่งรายการต่อบรรทัด

ระหว่างการติดตั้งแพ็กเกจ mlocate งาน cron จะถูกสร้างขึ้นที่รันคำสั่ง updatedb ทุก 24 ชั่วโมง สิ่งนี้ทำให้มั่นใจได้ว่าฐานข้อมูลจะได้รับการอัพเดทเป็นประจำ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับงาน cron ให้ตรวจสอบไฟล์ /etc/cron.daily/mlocate

ฐานข้อมูลสามารถอัพเดตได้ด้วยตนเองโดยรันคำสั่ง updatedb ในฐานะรูทหรือผู้ใช้ที่มีสิทธิ์ sudo:

sudo updatedb

กระบวนการอัพเดตจะใช้เวลาสักครู่ขึ้นอยู่กับจำนวนไฟล์และไดเรกทอรีและความเร็วของระบบของคุณ

ไฟล์ที่สร้างขึ้นหลังจากอัพเดตฐานข้อมูลจะไม่ปรากฏในผลลัพธ์การค้นหา

เมื่อเปรียบเทียบกับคำสั่ง find ทรงพลังกว่าที่ค้นหาระบบไฟล์ locate ทำงานเร็วกว่ามาก แต่ขาดคุณสมบัติมากมายและสามารถค้นหาได้โดยใช้ชื่อไฟล์เท่านั้น

วิธีการใช้คำสั่ง locate

ไวยากรณ์สำหรับคำสั่ง locate มีดังนี้:

locate PATTERN…

ในรูปแบบพื้นฐานที่สุดเมื่อใช้โดยไม่มีตัวเลือกใด ๆ คำสั่ง locate จะพิมพ์พา ธ สัมบูรณ์ของไฟล์และไดเรกทอรีทั้งหมดที่ตรงกับรูปแบบการค้นหาและที่ผู้ใช้มีสิทธิ์อ่าน

ตัวอย่างเช่นการค้นหาไฟล์ชื่อ. .bashrc คุณจะต้องพิมพ์:

locate.bashrc

เอาต์พุตจะรวมชื่อไฟล์ทั้งหมดที่มีสตริง. .bashrc ไว้ในชื่อ:

/etc/bash.bashrc /etc/skel/.bashrc /home/linuxize/.bashrc /usr/share/base-files/dot.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc

ไฟล์ /root/.bashrc จะไม่ปรากฏขึ้นเนื่องจากเรารันคำสั่งในฐานะผู้ใช้ปกติที่ไม่มีสิทธิ์การเข้าถึงไดเรกทอรี /root

หากรายการผลลัพธ์ยาวเพื่อให้สามารถอ่านได้ง่ายขึ้นคุณสามารถไพพ์เอาต์พุตไปยังคำสั่ง less :

locate.bashrc | less

คำสั่ง locate ยังยอมรับรูปแบบที่มีอักขระตัวกลมเช่นอักขระตัวแทน * เมื่อรูปแบบไม่มีอักขระแบบกลมคำสั่งค้นหา *PATTERN* นั่นคือเหตุผลในตัวอย่างก่อนหน้าทั้งหมดไฟล์ที่มีรูปแบบการค้นหาในชื่อของพวกเขาจะปรากฏ

สัญลักษณ์ตัวแทนเป็นสัญลักษณ์ที่ใช้แทนศูนย์หนึ่งตัวอักษรหรือมากกว่านั้น ตัวอย่างเช่นหากต้องการค้นหาไฟล์. .md ทั้งหมดบนระบบที่คุณจะใช้:

locate *.md

หากต้องการ จำกัด ผลลัพธ์การค้นหาให้ใช้ตัวเลือก -n ตามด้วยจำนวนผลลัพธ์ที่คุณต้องการให้แสดง ตัวอย่างเช่นคำสั่งต่อไปนี้จะค้นหาไฟล์. .py ทั้งหมดและแสดงเฉพาะผลลัพธ์ 10 รายการ:

locate -n 10 *.py

ตามค่าเริ่มต้นการ locate ทำการ locate พิมพ์เล็กและตัวพิมพ์ใหญ่ อ็อพชัน -i ( --ignore-case ) tels locate เพื่อละเว้นเคสและรันการค้นหาแบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

locate -i readme.md

/home/linuxize/p1/readme.md /home/linuxize/p2/README.md /home/linuxize/p3/ReadMe.md

หากต้องการแสดงจำนวนรายการที่ตรงกันทั้งหมดให้ใช้ตัวเลือก -c ( --count ) คำสั่งต่อไปนี้จะคืนค่าจำนวนไฟล์ทั้งหมดที่มี. .bashrc ในชื่อ:

locate -c.bashrc

6

โดยค่าเริ่มต้น locate ไม่ตรวจสอบว่าไฟล์ที่พบยังคงมีอยู่ในระบบไฟล์ หากคุณลบไฟล์หลังจากอัปเดตฐานข้อมูลล่าสุดหากไฟล์ตรงกับรูปแบบการค้นหาไฟล์นั้นจะถูกรวมไว้ในผลการค้นหา

ในการแสดงชื่อของไฟล์ที่มีอยู่ ณ เวลาที่รันเท่านั้นให้ใช้ตัวเลือก -e (- ที่มี --existing ) ตัวอย่างเช่นต่อไปนี้จะส่งคืนเฉพาะไฟล์. .json ที่มีอยู่:

locate -e *.json

locate --regex -i "(.mp4|\.avi)"

ข้อสรุป

คำสั่งค้นหาจะค้นหาระบบไฟล์เพื่อหาไฟล์และไดเรกทอรีที่มีชื่อตรงกับรูปแบบที่กำหนด ไวยากรณ์คำสั่งนั้นจดจำได้ง่ายและผลลัพธ์จะปรากฏขึ้นเกือบจะในทันที

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกที่มีทั้งหมดของประเภทคำสั่ง man locate ใน terminal ของคุณ

เทอร์มินัลค้นหา