วิธีค้นหาไฟล์ตามชื่อใน Linux

ค้นหาไฟล์ของคุณได้อย่างง่ายดายจากบรรทัดคำสั่งใน Linux

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

หา เป็นคำสั่งที่นิยมใช้ในระบบ Linux ที่สามารถช่วยคุณค้นหาไฟล์ต่างๆ ตามชื่อ ประเภท นามสกุล การอนุญาต เจ้าของ ฯลฯ

ในบทช่วยสอนนี้ เราจะเน้นไปที่การค้นหาไฟล์ตามชื่อ เราจะดูอาร์กิวเมนต์ต่าง ๆ ที่สามารถใช้กับ หา สั่งการ. นอกจากนี้เรายังจะได้เรียนรู้เกี่ยวกับ ค้นหา คำสั่งซึ่งเป็นวิธีที่เร็วกว่าในการค้นหาไฟล์ตามชื่อ

ไวยากรณ์สำหรับ หา สั่งการ

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

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

ค้นหา [search_path] [expression] [ตัวเลือก] [find_what]

ฉันได้พยายามลดความซับซ้อนของไวยากรณ์ของ หา คำสั่งให้เข้าใจคำสั่งได้ดีขึ้น

ให้เราดูคุณลักษณะแต่ละอย่างของไวยากรณ์เพื่อให้เข้าใจถึงความสำคัญของแต่ละรายการ

Search_Path: นี่คือเส้นทางที่เราระบุเส้นทางจากตำแหน่งที่เราต้องการให้ระบบเริ่มค้นหาไฟล์ กล่าวโดยย่อ มีการระบุไดเร็กทอรีเริ่มต้นเพื่อเริ่มการค้นหา

การแสดงออก: คุณสามารถระบุรูปแบบการค้นหาสำหรับไฟล์เฉพาะที่คุณกำลังค้นหา

ตัวเลือก: คุณสามารถใช้ตัวเลือกที่ใช้ได้กับ หา คำสั่งในพื้นที่นี้

หาอะไร: ในแอตทริบิวต์นี้ ให้ใส่ชื่อหรือส่วนของชื่อไฟล์ที่จะค้นหา

ให้เราอธิบายคำสั่งนี้ด้วยตัวอย่าง

ค้นหา /home/gaurav/workspace -name "source.c"

ในคำสั่งนี้ ฉันกำลังใช้ หา คำสั่งค้นหาไฟล์ source.c ฉันได้ขอให้ค้นหาในเส้นทาง '/home/gaurav/workspace' โดยเฉพาะ ใช้ -ชื่อ ตัวเลือกช่วยให้ฉันสามารถค้นหาไฟล์ที่ระบุโดย 'source.c'

นี่เป็นการสาธิตที่ง่ายที่สุดสำหรับการใช้ หา สั่งการ.

ค้นหาไฟล์ในไดเร็กทอรีปัจจุบัน

ใช้ หา คำสั่งในรูปแบบที่ง่ายที่สุดคือการค้นหาไฟล์ของคุณในไดเร็กทอรีการทำงานปัจจุบันของคุณ

หา .

คำสั่งนี้จะแสดงไฟล์ทั้งหมดในไดเร็กทอรีการทำงานปัจจุบันของคุณ ที่นี่ '.' หมายถึง 'ไดเร็กทอรีการทำงานปัจจุบัน' ต่อไปนี้เป็นผลลัพธ์จากไดเร็กทอรีการทำงานปัจจุบันของฉัน ไฟล์ทั้งหมดที่อยู่ในไดเร็กทอรีนี้แสดงรายการโดยไม่มีตัวกรองใดๆ

เอาท์พุท:

. ./context_log.policy ./snap ./snap/couchdb ./snap/couchdb/current ./snap/eclipse ./snap/eclipse/current ./snap/vim-editor ./snap/vim-editor/current ./ snap/vim-editor/common ./snap/vim-editor/1 ./snap/htop ./snap/htop/current ./snap/htop/common ./snap/htop/common/.local ./snap/htop /common/.local/lib ./snap/htop/common/.local/lib/locale ./snap/htop/common/.local/lib/locale/en_IN.UTF-8 ./snap/htop/common/ local/lib/locale/en_IN.UTF-8/LC_CTYPE

ในการค้นหาไฟล์ที่รู้จักชื่อโดยประมาณ ให้ใช้ หา คำสั่งตามที่แสดงด้านล่าง

หา . -name [string_from_filename\*]

ตัวอย่าง:

หา . -ชื่อบริบท\*

คำสั่งนี้ค้นหาไฟล์ที่มีสตริง 'บริบท' อยู่ในนั้น

เอาท์พุต:

./context_log.policy ./context.xml ./context_preview.c

ไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบันจะแสดงรายการซึ่งมีสตริง 'บริบท' อยู่ในนั้น

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

Linux ค่อนข้างระมัดระวังเกี่ยวกับความละเอียดอ่อนของตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ดังนั้น จึงมีโอกาสดีที่การค้นหาของคุณอาจล้มเหลว ฉันจะไม่ได้รับผลลัพธ์สำหรับคำสั่ง find ถ้าฉันใช้สตริงเป็น 'CONTEXT' แทน 'context' แม้ว่าตัวอักษรตัวเดียวในชื่อไฟล์จะแตกต่างไปจากชื่อไฟล์ดั้งเดิม การค้นหาก็จะล้มเหลว

แต่ไม่ต้องกังวลกับมัน คุณสามารถแทนที่ -ชื่อ ตัวเลือกด้วย -ฉันชื่อ. ซึ่งช่วยให้คุณสามารถค้นหาไฟล์ได้โดยไม่คำนึงถึงกรณีที่มีชื่อไฟล์ เพียงแค่เปลี่ยนแปลงคำสั่งง่ายๆ เท่านี้ก็เรียบร้อย

หา . -iname ต่อ\*

ผลลัพธ์จะเหมือนเดิมแม้ว่าฉันจะใช้สตริงเป็นตัวพิมพ์ใหญ่

./context_log.policy ./context.xml ./context_preview.c

ค้นหาไฟล์ในไดเร็กทอรีต่างๆ

คุณสามารถค้นหาไฟล์ในไดเร็กทอรีใดก็ได้บนระบบ Linux โดยไม่คำนึงถึงไดเร็กทอรีที่คุณกำลังทำงานอยู่

ค้นหา [directory_path] -iname [specific_filename]

ตัวอย่าง:

ค้นหา /home/gaurav/tomcat -iname ath.html

ที่นี่ ฉันได้ค้นหาไฟล์เฉพาะ 'ath.html' และไม่ใช่ไฟล์ที่คล้ายกับสตริงนี้ ดังนั้นผลลัพธ์ที่ได้จะเป็นเฉพาะไฟล์ที่กล่าวไว้ข้างต้น

/home/gaurav/tomcat/ath.html

ตอนนี้ สมมติว่าเราไม่ทราบชื่อไฟล์ทั้งหมด แต่ทราบเฉพาะสตริงของชื่อไฟล์นี้เท่านั้น จากนั้นเราสามารถค้นหาไฟล์ด้วยวิธีต่อไปนี้

ค้นหา /home/gaurav/tomcat -iname ath\*

คำสั่งนี้จะค้นหาไฟล์ทั้งหมดที่มีสตริง 'ath' ในตอนเริ่มต้น ฉันได้ใช้ -ฉันชื่อ ตัวเลือกที่นี่ ดังนั้นฉันไม่จำเป็นต้องกังวลเกี่ยวกับความไวของตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

เอาท์พุท:

/home/gaurav/tomcat/ATHENIAN_ART.html /home/gaurav/tomcat/ath_things.html /home/gaurav/tomcat/ath.html /home/gaurav/tomcat/ATHENIAN_ART.pdf /home/gaurav/tomcat/ATHHHHhow.html

คุณยังสามารถใช้คำสั่งเพื่อค้นหาหลายไฟล์ที่ลงท้ายด้วยนามสกุลที่คล้ายกันในชื่อ

ตัวอย่าง:

ค้นหา /home/gaurav/tomcat -iname "*.c"

คำสั่งจะค้นหาไฟล์ทั้งหมดในไดเร็กทอรีที่ระบุซึ่งมี .c เป็นนามสกุลในชื่อไฟล์

เอาท์พุต:

/home/gaurav/tomcat/stiil.c /home/gaurav/tomcat/project/temp.c /home/gaurav/tomcat/copy.c /home/gaurav/tomcat/gy.c

เราได้เรียนรู้เกี่ยวกับ หา คำสั่งค้นหาไฟล์ที่ระบุโดยชื่อไฟล์ ตอนนี้ ให้เราสำรวจอีกหนึ่งคำสั่งที่เร็วกว่าคำสั่งทั่วไป หา สั่งการ.

ค้นหา ภาพรวมคำสั่ง

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

สำหรับระบบ Ubuntu และ Debian, ใช้:

อัปเดต sudo apt sudo apt ติดตั้ง mlocate

สำหรับระบบ Cent Os และ Fedora, ใช้:

sudo yum ติดตั้ง mlocate

คำสั่ง find ค้นหาไฟล์ตามรูปแบบที่กำหนดในอินพุต ค้นหา ใช้ไฟล์ฐานข้อมูลเพื่อค้นหาไฟล์ ไฟล์ฐานข้อมูลนี้สร้างโดย อัพเดทb สั่งการ.

sudo updatedb

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

ใช้ ค้นหา สั่งการ

คุณสามารถใช้ ค้นหา สั่งได้ด้วยวิธีต่อไปนี้ อย่าลืมอัปเดตไฟล์ฐานข้อมูลของคุณโดยใช้คำสั่ง sudo updatedb.

ไวยากรณ์:

ค้นหา [filename_or_part_of_filename]

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

ตัวอย่าง:

ค้นหา copy.c

เอาท์พุต:

/home/gaurav/Downloads/git-2.23.0/copy.c /snap/core/9804/usr/lib/python3.5/__pycache__/copy.cpython-35.pyc /snap/core/9993/usr/lib /python3.5/__pycache__/copy.cpython-35.pyc /snap/core18/1880/usr/lib/python3.6/__pycache__/copy.cpython-36.pyc /snap/core18/1885/usr/lib/python3 .6/__pycache__/copy.cpython-36.pyc /snap/core20/634/usr/lib/python3.8/__pycache__/copy.cpython-38.pyc /usr/lib/python3.5/__pycache__/copy.cpython -35.pyc /usr/lib/python3.6/__pycache__/copy.cpython-36.pyc /usr/share/icons/MacBuntu-OS/apps/128/copy.com.png

บรรทัดที่ไฮไลต์แสดงว่าพบไฟล์ 'copy.c' ที่แน่นอน นอกจากผลลัพธ์นี้แล้ว ยังมีไฟล์อื่นๆ บางไฟล์ที่มี 'copy.c' เป็นส่วนหนึ่งของชื่อไฟล์ด้วย

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

ค้นหา -b '\ ชื่อไฟล์'

ตัวอย่าง:

ค้นหา -b '\ copy.c'

เอาท์พุต:

/home/gaurav/Downloads/git-2.23.0/copy.c

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

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

บทสรุป

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