วิธีค้นหาไฟล์ทั้งหมดที่มีนามสกุลเดียวกันภายในไดเรกทอรี


61

ผมเริ่มต้นในลินุกซ์และฉันต้องการค้นหาสำหรับทุกไฟล์ใน.conf/etc/

ฉันพยายามgrep -r *.conf /etcแต่ผลลัพธ์ไม่ถูกต้อง

ผมทำอะไรผิดหรือเปล่า?

คำตอบ:


94

เพียงกดCtrl+ Alt+ Tบนแป้นพิมพ์เพื่อเปิด Terminal เมื่อเปิดขึ้นให้เรียกใช้คำสั่งด้านล่าง:

find . -type f -name "*.txt"

.txtนี้จะแสดงรายการไฟล์ทั้งหมดที่มีนามสกุล

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

find /etc -type f -name "*.conf"

ค้นหา/etcไดเร็กทอรีและไดเร็กทอรีย่อยทั้งหมดเพื่อหาไฟล์ปกติที่มี.confนามสกุล


1
มันได้ผล. มีทางเลือกอื่นสำหรับคำสั่งนี้หรือไม่?
Adrian George

1
คุณสามารถดูที่ค้นหา
Mitch

@AdrianGeorge findมีการใช้กันอย่างแพร่หลายมีเอกสารที่ดีมากและมี StackOverflow / แลกเปลี่ยนโพสต์มากมายเกี่ยวกับเรื่องนี้ว่ามันยากที่จะหาสิ่งที่ง่ายต่อการทำงานด้วย ทุกสิ่งที่คุณต้องการทำถูกเขียนขึ้นทางออนไลน์ที่ไหนสักแห่ง
BallpointBen

6

ฉันเองใช้findแต่คุณสามารถ glob สำหรับสิ่งเหล่านี้ด้วย:

shopt -s globstar
ls /etc/{,**/}*.conf

และคุณสามารถใช้ค้นหาและรวดเร็ว แต่ไม่น่าเชื่อถือ

locate '/etc/**.conf'

ทำไมจึงไม่locateน่าเชื่อถือ
Giraldi

1
@Giraldi locateอาศัยฐานข้อมูล mlocate ที่ได้รับการอัปเดตเมื่อเร็ว ๆ นี้เพื่อความถูกต้อง ตามค่าเริ่มต้นที่กำหนดให้อัปเดตวันละครั้งเท่านั้น (แม้ว่าคุณจะบังคับให้ใช้งานด้วยตนเองupdatedb)
Oli

@Oli ไม่เป็นความจริงบน macs ใช่มั้ย คิดว่า mac os อัปเดต
mlocate อยู่

6

grepค้นหาเนื้อหาของไฟล์ไม่ใช่ชื่อไฟล์

ในการค้นหา.confไฟล์ทั้งหมดที่/etc/คุณต้องการ:

find /etc -name "*.conf"

2

คำสั่ง find ช้าใช้คำสั่งนี้จะให้ผลลัพธ์ทันที:

locate "/etc/*.conf"

ข้อมูลเพิ่มเติมเกี่ยวกับlocateคำสั่ง (ในmlocateแพ็คเกจ) สามารถดูได้ที่นี่: https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab


locateถูกกล่าวถึงเมื่อสองปีที่แล้ว: askubuntu.com/a/333728/158442
muru
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.