Linux ls เพื่อแสดงวันที่และชื่อไฟล์เท่านั้น


72

ฉันจะใช้lsใน linux เพื่อดูรายการวันที่และชื่อไฟล์ได้เท่านั้น ฉันไม่ต้องการเห็นข้อมูลอื่นเช่นเจ้าของหรือการอนุญาต เป็นไปได้ไหม


1
lsดีมากเนื่องจากมีการเรียงลำดับอย่างรวดเร็วตามวันที่และเวลา แต่การจัดรูปแบบยากที่จะจัดการ ฉันขอแนะนำให้ใช้โทเค็นที่ - เวลาสไตล์เหมือน--time-style='+&%Y%m%d+%H%M%S.%N'ที่โทเค็นคือ '&' โดยใช้เป็นข้อมูลอ้างอิงคุณสามารถแยกวิเคราะห์เอาต์พุตด้วยเพิ่มเติมsedเพื่อให้คุณสามารถย้อนรอยก่อนโทเค็นมีขนาด! หากใครต้องการโพสต์ข้อความนี้เป็นคำตอบที่สมบูรณ์อย่าลังเลที่จะนอนตอนนี้ฉันนอนหลับเกินไปแล้ว :)
Aquarius Power

คำตอบ:


98

ทำไมไม่ใช้statแทนls?

stat -c "%y %s %n" *

1
นี่เป็นสิ่งที่ดี แต่อาจมีปัญหา "สภาพแวดล้อมที่มีขนาดใหญ่เกินไป" / "รายการอาร์กิวเมนต์ที่ยาวเกินไป"
จ้า

4
:-) เพียงพิสูจน์แนวคิด ในชีวิตจริง [tm] นี้จะเป็นfind . -type f -print0 | xargs -0 stat -c "%y %s %n"
f4m8

5
ในการจัดรูปแบบผลลัพธ์ของstatคุณสามารถเพิ่มข้อมูลความกว้างให้กับสตริงรูปแบบเช่นฟังก์ชั่น C printf เช่น"%y %8s %n"ไม่ได้รับการบันทึก แต่ดูเหมือนว่าจะใช้งานได้ (coreutils 8.17, Fedora 18)
LiuYan 刘研

เพราะด้วยlsฉันสามารถส่งออกด้วยตัวคั่นถ่านหนึ่งพัน มันทำงานstatอย่างไร
อัลบันดี้

ฉันไม่เห็นว่าสิ่งนี้ตอบคำถามได้อย่างไร! มันเป็นวิธีการแก้ปัญหาที่ดีนอกกล่อง lsแต่คุณจะสูญเสียผลประโยชน์ทั้งหมดจาก แล้วสีล่ะ?
MS Berends

30

คุณสามารถควบคุมได้มากเกี่ยวกับวิธีแสดงรายการไฟล์ด้วยfindยูทิลิตี้ lsไม่อนุญาตให้คุณระบุคอลัมน์ที่คุณต้องการ

ตัวอย่างเช่น:

$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601   4096    .
20111007.0601   2   b
20111001.1322   4096    a

อาร์กิวเมนต์ของprintfการดำเนินการเป็นรายละเอียดใน manpage คุณสามารถเลือกข้อมูลเวลาที่แตกต่างกันขนาดที่คุณต้องการ (ขนาดไฟล์หรือบล็อกดิสก์ที่ใช้) ฯลฯ คุณสามารถทำให้ปลอดภัยสำหรับชื่อไฟล์ที่ผิดปกติหากต้องการการประมวลผลเพิ่มเติม


1
อินพุตด้านบนเพื่อค้นหา ('% CY% Cm% Cd.% C ... ') ยาว อย่างน้อย GNU find has มี%C+(เอาต์พุต "2016-08-29 + 10: 57: 56.9201257840") และ%Cc(เอาท์พุท "Mo 29 ส.ค. 2016 10:57:56 CEST")
guettli

อยากให้มันใช้งานได้บน macs
Jerinaw

น่ารักและหากคุณต้องการพิมพ์เพียงเส้นทางและขนาดที่สมบูรณ์สิ่งนี้ควรใช้งานได้ "find / path / to / -printf '% h /% f% s \ n'"
Pierluigi Vernetto

24

คุณสามารถใช้ยูทิลิตีอื่นเช่นจัดawkรูปแบบผลลัพธ์ls1 :

/bin/ls -ls | awk '{print $7,$8,$9}'


1. ใช่โดยทั่วไปคุณไม่ควรแยกวิเคราะห์ผลลัพธ์ของ lsแต่ในกรณีนี้คำถามจะเรียกมันโดยเฉพาะ ...


ที่ไม่พิมพ์ขนาดไฟล์แม้ว่า และมันจะพิมพ์เฉพาะส่วนแรกของชื่อไฟล์ที่มีช่องว่างในนั้น และสามารถล้มเหลวได้หากlsเป็นนามแฝง (พูดalias ls='ls -i') คุณควรระมัดระวังเป็นอย่างมากหากคุณต้องการแยกวิเคราะห์เอาต์พุต ls
Mat

ฉันมีขนาดไฟล์ในนั้นแล้วแก้ไขออก (ช่วงเวลาที่คลุมเครือ) - ฉันจะกู้คืน และผมเห็นด้วยเกี่ยวกับการเตือนทั้งหมดอีกครั้งแยกlsแต่นั่นคือสิ่งที่ OP ต้องการ ...
jasonwryan

ฉันไม่เห็นด้วย OP ต้องการชื่อไฟล์ไม่ใช่ส่วนแรกของชื่อไฟล์หากชื่อไฟล์มีช่องว่าง (ใช้/bin/lsจะหลีกเลี่ยงปัญหานามแฝง.)
จ้า

นั่นเป็นที่เข้าใจกันโดยปริยาย : สิ่งที่ระบุไว้อย่างชัดเจนว่า OP ต้องการแก้ปัญหาด้วยการlsที่เราทั้งสองตกลงจะไม่ตอบสนองความต้องการช่องว่าง /bin/lsข้อเสนอแนะเป็นหนึ่งที่ดี
jasonwryan

รักวิธีแก้ปัญหานี้ เกี่ยวกับความคิดเห็นก่อนหน้าเกี่ยวกับการไม่พิมพ์ขนาดคุณสามารถรับขนาดด้วย ls และสามารถใช้-hเพื่อทำให้มนุษย์อ่านได้ ฉันใช้เฉพาะ: ls -lah | awk '{print $5,$6,$7,$8}'ซึ่งให้ผล: 4.0K Jan 24 18:17. จริงอยู่ที่โซลูชันดั้งเดิมไม่ได้พูดอะไรเกี่ยวกับ awk แต่ใน linux เราควรถือว่าเอาต์พุตของกระบวนการจะเป็นอินพุตของกระบวนการอื่นเสมอใช่ไหม ;)
abgordon

5

คุณยังสามารถใช้คำสั่ง 'วันที่' มันใช้งานง่ายมาก:

date -r [ชื่อไฟล์]


นิสัยดีนี่เป็นเรื่องใหม่สำหรับฉัน น่าเสียดายที่มันไม่สามารถใช้งานได้กับไฟล์หลายไฟล์ผ่าน globbing: date -r foo*.txt->date: extra operand "foo2.txt"
guettli

4

หากคุณต้องการใช้ ls แต่รักษาขนาดที่เหมาะสมคุณสามารถใช้:

ls -Ss1pq --block-size=1

1

โดยที่ space ถูกกำหนดเป็นตัวคั่นและ f6 หมายถึงฟิลด์ 6

ls -lt | cut -d" " -f6-

2
มันล้มเหลวเนื่องจาก ls ใช้ช่องว่างสำหรับการเยื้องและบางครั้งก็เป็น -f6- เวลาอื่นที่เป็น -f5-
Power ราศีกุมภ์

1

คุณสามารถไปป์ไลน์สองคำสั่ง

ls -l|cut -d" " -f5

1
มันล้มเหลวเนื่องจาก ls ใช้ช่องว่างสำหรับการเยื้องและบางครั้งก็เป็น -f6- เวลาอื่นที่เป็น -f5-
Power ราศีกุมภ์

-1

ls -s1ส่งคืนขนาดไฟล์และชื่อบน AIX เท่านั้นไม่แน่ใจเกี่ยวกับ Linux


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