ตัวอย่างเช่นฉันจะทำซ้ำ:
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"}
เพื่อยกเว้นส่วนขยายไฟล์เฉพาะ