^ d หมายถึงอะไรใน ls -l | grep ^ d?


13

เมื่อฉันทำls -l | grep ^dมันจะแสดงรายการเฉพาะไดเรกทอรีในไดเรกทอรีปัจจุบัน

สิ่งที่ผมอยากจะทราบว่าเป็นสิ่งที่ไม่ลูกศร^ใน^dหมายถึง?


สำหรับข้อมูลที่เกี่ยวข้องให้ค้นหานิพจน์ทั่วไปหรือดูหน้านี้เกี่ยวกับการใช้นิพจน์ทั่วไปใน grep: robelle.com/smugbook/regexpr.html
Trey Hunner

ใช้งานได้ แต่ไม่ดี พิจารณาls */แทนซึ่งจะทำงานโดยมีหรือไม่มีรายการยาว ๆ ( ls -l) และไม่จำเป็นต้องใช้grep(และเร็วกว่าเล็กน้อย) และมีโอกาสน้อยกว่า (มากกว่าls -l *) ในการเรียกใช้รายการอาร์กิวเมนต์ของปัญหาที่ยาวเกินไป (เนื่องจากใส่ไดเรกทอรีลงในคำสั่งเท่านั้น ไลน์). แน่นอนfind . -maxdepth 1 -type dดียิ่งขึ้นเพราะมันไม่เกะกะบรรทัดคำสั่งของคุณเลย
Adam Katz

คำตอบ:


21

คำตอบของ Andyถูกต้องตามที่เห็นในหน้า man:

ทอดสมอ

คาเร็ต ^ และเครื่องหมายดอลลาร์เป็นเมตาอักขระที่ตรงกับสตริงว่างที่จุดเริ่มต้นและจุดสิ้นสุดของบรรทัดตามลำดับ

เหตุผลในการทำงานคือการ-lตั้งค่าสถานะเพื่อให้lsใช้รูปแบบรายการแบบยาว สิ่งแรกที่แสดงในแต่ละบรรทัดคือการอนุญาตที่มนุษย์สามารถอ่านได้สำหรับไฟล์และอักขระตัวแรกของนั้นคือdสำหรับไดเรกทอรีหรือ-ไฟล์


14

นั่นเป็นคาเร็ทไม่ใช่แครอท มันหมายถึง "จุดเริ่มต้นของบรรทัด" grep กำลังจับคู่เฉพาะบรรทัดที่ขึ้นต้นด้วย "d"

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