ฉันพยายามค้นหาไฟล์ทั้งหมดที่มีชื่อขึ้นต้นด้วยอักษรตัวใหญ่ ฉันได้ลองใช้คำสั่งต่อไปนี้:
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
หรือไม่
ที่ได้ผล คุณสามารถอธิบายได้ว่าทำไมในคำตอบ?
—
Karl Bielefeldt
—
mikeserv
เหตุใดคุณจึงหนีเครื่องหมายทับ (
—
Cristian Ciupitu
\/
) นอกจากนี้คุณกำลังค้นหาสิ่งที่ใช้ ( find --version
)?
หนีเป็นสิ่งที่จำเป็นเฉพาะเมื่อคุณใช้มันเป็นตัวคั่นเช่นใน
—
deltab
/
s/foo\/bar/foobar/
(แต่บ่อยครั้งที่คุณสามารถใช้ตัวคั่นอื่น: s#foo/bar#foobar#
.)
LC_ALL=C find ...
อะไร