ค้นหาทั้งไฟล์และไดเรกทอรีปกติ


9

ฉันจะบอกได้อย่างไร (ถ้าฉันสามารถบอกได้!) ค้นหาไฟล์ทั้งในไดเรกทอรีและประเภทไฟล์?

find -type fd

มันเป็นเหมือนยุคมืดแห่งการแก้ปัญหาในที่นี่

คำตอบ:


12

นี่คือคำสั่งที่คุณสามารถใช้ได้:

find -type f -or -type d

7
หรือfind -type f -o -type dสำหรับทางเลือกที่สอดคล้องกับ POSIX
จัดการ

เฮ้ฉันเจอปัญหาเล็กน้อยกับเรื่องนี้เมื่อฉันพบเงิน $ - ประเภท d หรือ - ประเภท f - และ - ชื่อ "วิสัยทัศน์" มันไม่ได้ทำสิ่งที่ฉันคาดหวังว่าฉันจะหายไปอย่างอื่น!
James

2
- มีความสำคัญมากกว่า -o ใช้วงเล็บ (แต่หนีพวกเขาสำหรับเปลือก) ไม่จำเป็นต้องใช้ที่ไม่ได้มาตรฐานหรือหรือ
Stéphane Chazelas

ถ้าฉันลอง `หา -type d หรือ -type f -name 'abc' . I get an error.. find: พา ธ ต้องนำหน้านิพจน์: `.. ความคิดใด ๆ
alpha_989

1
@ alpha_989 หายไป-ก่อนorหรือไม่
Mateusz Piotrowski

2

TL: DR

ใช้ find . -name "*string*" -type f -o -name "*string*" -type d

คำอธิบาย

คำสั่ง -o ors ขัดแย้งหลังจาก filepath สมบูรณ์เช่นที่คำนวณfind . -name "*string*" -type f -o -type d find . (-name "*string*" -type f) -o (-type d)ด้วยเหตุผลนี้คุณต้องระบุ

ผู้ใช้ส่วนใหญ่จะต้องการสิ่งที่ดูเหมือน

find . -name  "*string*" -type f -o -name "*string*" -type d

ซึ่งคำนวณเป็น

find . (-name  "*string*" -type f) -o (-name "*string*" -type d)

ค้นหารายละเอียดไวยากรณ์

-name "*string*"ค้นหาชื่อที่มีสตริงstringที่ใดก็ได้ในพวกเขา


1

หากคุณใช้ GNU find แล้วทางออกต่อไปนี้อาจเหมาะกับคุณ:

find -type d,f

ดูman findรายละเอียดเพิ่มเติมได้ที่:

หากต้องการค้นหามากกว่าหนึ่งประเภทในครั้งเดียวคุณสามารถระบุรายการตัวอักษรรวมที่คั่นด้วยเครื่องหมายจุลภาค,(ส่วนขยาย GNU)


2
ใช้GNU findเวอร์ชัน 4.7.0 .. ,มันดูเหมือนจะไม่สนับสนุน ข้อความแสดงข้อผิดพลาดระบุว่าfind: Arguments to -type should contain only one letter.
alpha_989
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.