ฉันพยายามค้นหาไฟล์ทั้งหมดที่มีชื่อขึ้นต้นด้วยอักษรตัวใหญ่ ฉันได้ลองใช้คำสั่งต่อไปนี้:
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 ...อะไร