ตัวอย่างเช่นฉันจะทำซ้ำ:
ls *.txt
เมื่อไฟล์ข้อความของฉันหายไป.txt
ตอนจบและเท่าที่ส่วนขยายจะปรากฏเหมือนกับไฟล์ประเภทอื่น ๆ ?
หรือสามารถแสดงรายการเฉพาะไฟล์ที่ไม่มีนามสกุลไฟล์ได้หรือไม่
ตัวอย่างเช่นฉันจะทำซ้ำ:
ls *.txt
เมื่อไฟล์ข้อความของฉันหายไป.txt
ตอนจบและเท่าที่ส่วนขยายจะปรากฏเหมือนกับไฟล์ประเภทอื่น ๆ ?
หรือสามารถแสดงรายการเฉพาะไฟล์ที่ไม่มีนามสกุลไฟล์ได้หรือไม่
คำตอบ:
หากต้องการจับคู่ไฟล์ที่ไม่มีนามสกุลเลยคุณสามารถใช้คำสั่ง
ls | grep -v '\.'
เพื่อจับคู่ไฟล์ที่ไม่มี.txt
นามสกุลคุณสามารถใช้คำสั่ง
ls | grep -v '\.txt'
สิ่งนี้จะผ่านรายการของไฟล์ในไดเรกทอรีปัจจุบันไปยังgrep
ซึ่งจะลบชื่อไฟล์ทั้งหมดที่มี.
(หรือ.txt
สำหรับคำสั่งที่สอง) ในพวกเขา
grep
สามารถใช้กับคำสั่งใด ๆ |
สัญลักษณ์ที่ใช้ในการส่งผ่านผลลัพธ์จากคำสั่งหนึ่งไปยังอีกและgrep
จะตรงกับสายที่มี (หรือไม่ได้) ข้อความที่ระบุ แต่ถ้าคุณต้องการแก้ไขข้อความ (นอกเหนือจากการพิมพ์บรรทัดที่ตรงกัน) คุณควรดูที่sed
คำสั่ง
ls --classify | grep -v '/'.'*'
ด้วยls -ignore="PATTERN"
คุณสามารถแยกไฟล์ออกจากผลลัพธ์ ls
ตัวอย่างเช่นหากls --ignore="*.txt"
ต้องการละเว้นไฟล์ txt
เพียงคัดค้านรูปแบบของคุณ (หมายเหตุ: shopt -s extglob
จำเป็นต้องมี)
ในการแสดงไฟล์ทั้งหมดโดยไม่มีนามสกุล:
ls !(*.*)
ในการแสดงtxt
ไฟล์ที่ไม่ใช่ให้ลอง:
ls !(*.txt)
คำสั่งls -SX1|less
จะเรียงตามนามสกุลในคอลัมน์เดียวและไฟล์ที่ไม่มีจะถูกย้ายไปด้านบน แนะนำให้ใช้การวางท่อน้อยกว่าในตัวอย่างสำหรับไดเรกทอรีที่มีไฟล์มากกว่าสองสามไฟล์เพื่อ จำกัด เอาต์พุตให้เต็มหน้าจอในแต่ละครั้ง
ฉันชอบที่จะหลีกเลี่ยงการใช้ grep สำหรับการดำเนินการรายการง่ายๆ
เพื่อที่จะหลีกเลี่ยงการใช้grep
,
ฉันแนะนำให้ใช้ls !(*.*)
เพื่อค้นหาไฟล์ที่ไม่มีนามสกุลไฟล์และ
ls -I "*.gz" -I "*.tz"
หรือ ls --ignore={"*.jpg","*.png","*.bmp"}
เพื่อยกเว้นส่วนขยายไฟล์เฉพาะ