ค้นหาไฟล์ที่มีนามสกุลบางอย่าง


67

ฉันfindจะใช้เพื่อค้นหาไฟล์ทั้งหมดที่มี.xlsหรือ.csvนามสกุลได้อย่างไร ฉันเห็น-regexตัวเลือก แต่ฉันไม่รู้วิธีใช้

คำตอบ:


115

ทำไมไม่ใช้เพียงแค่นี้:

find -name "*.xls" -o -name "*.csv"

คุณไม่ต้องการ regex สำหรับสิ่งนี้

หากคุณต้องการใช้ regex อย่างแน่นอนให้ใช้

find -regex ".*\.\(xls\|csv\)"

8
คำตอบที่ดีกว่าของฉัน +1
Paul Tomblin

1
เหตุใดจึงต้องมีแบ็กสแลชก่อนวงเล็บ? ฉันรู้ว่ามันใช้งานไม่ได้หากไม่มี แต่ดูเหมือนว่าควร

1
เนื่องจากเป็นนิพจน์ปกติของ emacs โดยค่าเริ่มต้น ใช้ -regextype เพื่อเปลี่ยน

4
เพียงบันทึก: ฉันไม่สามารถจำเครื่องมือที่ต้องการ "\ (" สำหรับการจัดกลุ่มและที่ต้องการ "(" ฉันต้องพยายามรู้เสมอ)
Joachim Sauer

1
ตัวอย่าง regex ไม่ทำงาน
hostmaster

12
find . \( -name  \*.xls -o -name \*.csv \) -print

ไม่ทราบเกี่ยวกับตัวเลือก -o ขอบคุณ!

1
จำเป็นต้องใช้วงเล็บหรือไม่ หา '(' -name * .xls -o -name * .csv ')' - พิมพ์

@ เอเดรีย - ไม่มันไม่ได้ ฉันไม่แน่ใจว่าจะต้องมี parens ในผู้ที่ไม่ใช้ GNU หรือไม่ว่า "-print" ไม่ใช่การกระทำเริ่มต้น
พอลทอมบลิน

5
ดี GNU find (ค่าเริ่มต้นใน ubuntu 11.04) ทำงานได้อย่างถูกต้องกับทั้ง parens และ -print OR โดยไม่มี (parens และ -print) แต่find . -name \*.xls -o -name \*.csv -printส่งออกเฉพาะไฟล์ที่ตรงกับ. csv,
bbaja42

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