ละเว้นบรรทัดแรกจากเอาต์พุตคำสั่ง Linux ใด ๆ


167

ฉันมีข้อกำหนดที่ฉันต้องการละเว้นบรรทัดที่ 1 จากผลลัพธ์ของls -latr "some path"เนื่องจากฉันต้องลบออกtotal 136จากด้านล่างเอาท์พุท

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นฉันจึงเขียนls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -qที่แยกบรรทัดแรก แต่เมื่อโฟลเดอร์ว่างเปล่ามันจะไม่ตัดทิ้ง โปรดบอกวิธีการละเว้นบรรทัดที่ 1 ในเอาต์พุตคำสั่ง linux

คำตอบ:



261

tailโปรแกรมสามารถทำเช่นนี้:

ls -lart | tail -n +2

-n +2หมายถึง“เริ่มต้นผ่านในบรรทัดที่สองของการส่งออก”


1
โปรดทราบว่าtailการใช้งานบางอย่างจำเป็นต้องมีการ-nตั้งค่าสถานะสำหรับเช่นนั้นในtail -n +2
Mat

คุณสามารถใช้งานได้find . -name . -o -ls -pruneเช่นกัน แต่ก็ให้ผลลัพธ์ที่ต่างออกไป
Donal Fellows

@ แมท: ดังนั้นดูเหมือนว่าแม้ว่ามันจะทำงานได้โดยไม่ต้องเมื่อฉันพยายาม (บน OSX)
Donal Fellows

มันเคยทำงานกับcoreutilsหาง แต่มันเลิกใช้แล้วถูกลบออก ตอนนี้คุณจะได้รับtail: cannot open '+2' for reading: No such file or directory(coreutils 8.7) สิ่งที่น่าเศร้าคือใช้งานอื่น ๆ ไม่ยอมรับ-n...
จ้า

4
@ Mat: บางคนต้องการมันคนอื่น ๆ จะไม่เอามัน? ฮึ ฮึกฮึกฮึก! มันน่าขยะแขยง
Donal Fellows


20

นี้เป็นวิธี hacky ls -lart | grep -v ^totalอย่างรวดเร็ว:

โดยทั่วไปให้ลบบรรทัดใด ๆ ที่ขึ้นต้นด้วย "รวม" ซึ่งในlsเอาต์พุตควรเป็นบรรทัดแรกเท่านั้น

วิธีทั่วไปมากขึ้น (เพื่ออะไร):

ls -lart | sed "1 d"

sed "1 d" หมายถึงพิมพ์ทุกอย่างยกเว้นบรรทัดแรกเท่านั้น


3
การใช้grepตัวกรองสำหรับงานนี้เป็นสิ่งที่อันตรายโดยทั่วไป มันสามารถจับคู่สิ่งต่าง ๆ โดยไม่คาดคิด
Donal Fellows

บางครั้งใช่และฉันคิดว่ามันไม่ใช่ทางออกที่ดีที่สุด ... แต่คำสั่ง ls จะนำรายการที่มีสิทธิ์ในไดเรกทอรีเสมอ มันไม่เหมาะอย่างยิ่งที่ grep จะทำการตรวจสอบแต่ละบรรทัดและ ls จะทำงานแตกต่างกับแฟล็กอื่น ๆ
Jeff Ferland

1
นี่เป็นเพียงความหมาย แต่ในทางเทคนิคแล้วมันหมายถึงลบบรรทัดแรกออกจากสตรีม
John Morales

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