ค้นหาไฟล์ที่ชื่อขึ้นต้นด้วยอักษรตัวใหญ่


14

ฉันพยายามค้นหาไฟล์ทั้งหมดที่มีชื่อขึ้นต้นด้วยอักษรตัวใหญ่ ฉันได้ลองใช้คำสั่งต่อไปนี้:

find . -type f -regex '.*\/[A-Z][^/]*'

มันกำลังค้นหาเส้นทางด้วยตัวอักษรตัวพิมพ์เล็กเท่านั้น ผลงานดังต่อไปนี้:

find . -type f -regex '.*\/[ABCDEFGHIJKLMNOPQRSTUVWXYZ][^/]*'

เช่นเดียวกับ:

find . -type f | grep '.*\/[A-Z][^/]*$'

ฉันได้ลองใช้ตัวเลือกต่าง ๆ ทั้งหมดregextypeโดยใช้ผลลัพธ์เดียวกัน

ทำไมfindประกอบด้วยตัวอักษรตัวพิมพ์เล็กใน[A-Z]? ฉันคิดว่า regex [a-zA-Z]สำหรับที่เป็น มีวิธีใดที่จะระบุช่วงของตัวอักษรตัวพิมพ์ใหญ่เท่านั้นfindหรือไม่


5
เกี่ยวกับLC_ALL=C find ...อะไร
mikeserv

ที่ได้ผล คุณสามารถอธิบายได้ว่าทำไมในคำตอบ?
Karl Bielefeldt

3
ผมอาจจะลอง แต่แล้วคุณอาจจะพลาดออกมาเกี่ยวกับเรื่องนี้
mikeserv

1
เหตุใดคุณจึงหนีเครื่องหมายทับ ( \/) นอกจากนี้คุณกำลังค้นหาสิ่งที่ใช้ ( find --version)?
Cristian Ciupitu

1
หนีเป็นสิ่งที่จำเป็นเฉพาะเมื่อคุณใช้มันเป็นตัวคั่นเช่นใน/ s/foo\/bar/foobar/(แต่บ่อยครั้งที่คุณสามารถใช้ตัวคั่นอื่น: s#foo/bar#foobar#.)
deltab

คำตอบ:


35

-regexคุณไม่จำเป็นต้องใช้ คุณสามารถใช้-nameแทน

find . -type f -name "[[:upper:]]*"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.