จัดเรียงตามวันที่


17

เดิม:

23 ม.ค. 2011 10:42 บางวัน 2007.12.20.avi
26 มิถุนายน 2009 สิ่งที่เกิดขึ้น 2009.06.25.avi
12 ก.พ. 2010 บางสิ่ง 2010.02.11.avi
29 มกราคม 2011 09:17 บางวัน 2011.01.27.avi
ก.พ. 11 2011 20:06 บางวัน 2011.02.10.avi
27 ก.พ. 2011 23:05 บางวัน 2011.02.24.avi

เอาท์พุท:

27 ก.พ. 2011 23:05 บางวัน 2011.02.24.avi
ก.พ. 11 2011 20:06 บางวัน 2011.02.10.avi
29 มกราคม 2011 09:17 บางวัน 2011.01.27.avi
23 ม.ค. 2011 10:42 บางวัน 2007.12.20.avi
12 ก.พ. 2010 บางสิ่ง 2010.02.11.avi
26 มิถุนายน 2009 สิ่งที่เกิดขึ้น 2009.06.25.avi

ฉันสร้างรายการด้านบน (ดั้งเดิม) ด้วย:

ls -A -lR | grep "^-" | sed "s/.\{43\}/&\n/" | grep -v "^-" | while read ONELINE; do if echo $ONELINE | cut -d " " -f3 | grep -o '[0-9][0-9]:[0-9][0-9]' > /dev/null 2>&1; then echo $ONELINE | sed "s/.\{7\}/&$(date +%Y) /"; else echo $ONELINE; fi; done

ฉันจะรับเอาต์พุตที่ไฟล์ล่าสุดอยู่ที่ด้านบนได้อย่างไร


2
@ user4724: yuo สร้างรายการได้อย่างไร

@ user4724: นั่นไม่ได้สร้าง outpout แบบเดียวกับฉันที่คุณมี - ไม่ว่า Gilles จะมีคำตอบ

คำตอบ:


21

โดยส่วนใหญ่lsมี-tตัวเลือก จากmanหน้ากล่อง Debian ของฉัน:

เรียงลำดับตามเวลาการแก้ไข

ลองคำสั่งต่อไปนี้:

$ ls -lt


ฉันต้องการมันซ้ำ ๆ ขอโทษ
LanceBaynes

+ ls -lt จะแสดงรายการไดเรกทอรีแบบเต็มหาก 1 ไฟล์มีการเปลี่ยนแปลง
LanceBaynes

14

เป็นไฟล์ข้อความที่คุณพยายามเรียงลำดับหรือคุณพยายามดูรายการไดเรกทอรีตามวันที่หรือไม่ สำหรับหลังใช้-tlsธง สำหรับอดีตให้ดูโดยเฉพาะการ-Mตั้งค่าสถานะเป็น GNU เรียงลำดับโดยใช้ตัวย่อชื่อเดือนสามตัวอักษร คำสั่งต่อไปนี้เรียงลำดับตามคอลัมน์ที่ 3, 1, 2 และ 4 โดยถือว่าคีย์การเรียงลำดับที่สองเป็นชื่อเดือน

sort -k 3 -k 1M -k2 -k4 in.txt

พิจารณาใช้วันที่สไตล์ญี่ปุ่น / ISO เสมอตามลำดับ YYYY-MM-DD-HH-MM-SS (เช่นสำคัญที่สุดก่อนความกว้างคอลัมน์คงที่) วิธีการเรียงลำดับตามวันนี้เหมือนกับการเรียงลำดับพจนานุกรม


อย่าลืมเลขศูนย์นำหน้าในการแนะนำรูปแบบวันที่นั้น นี่คือรูปแบบที่ฉันใช้เมื่อใดก็ตามที่ฉันจัดรูปแบบสตริงด้วยตนเอง
ขโมยในขณะนี้

@stolenmoment คุณสามารถใช้ช่องว่างแทนค่าศูนย์ถ้าคุณไม่คำนึงถึงช่องว่างจุดสำคัญคือคอลัมน์คงที่ด้วย 2018  5 26งานก็เช่นเดียวกับ2018 05 26(ตราบเท่าที่คุณไม่ได้ไปผ่านมาร์กอัปที่ผสานช่องว่างติดต่อกัน ... ), 2018 5 26สิ่งที่ไม่ทำงานได้ดีคือ
Gilles 'หยุดความชั่วร้าย' Gilles

ใช่ฉันหลีกเลี่ยงช่องว่างในชื่อไฟล์ฉันแน่ใจว่าคุณสามารถเดาได้ว่าทำไม
ขโมยในช่วง

3

ฉันไม่แน่ใจว่าฟังก์ชั่นอยู่ในlsคำสั่งเมื่อมีการถามคำถามเดิมหรือไม่ แต่ตอนนี้คุณสามารถใช้ตัวเลือก--full-timeได้

เช่น,

ls -t --full-time 

จะเรียงลำดับตามเวลาที่เก่าที่สุดที่ด้านล่าง หรือถ้าคุณใช้:

ls -tr --full-time

จากนั้นมันจะกลับคำสั่ง


คำถามคือเกี่ยวกับวิธีจัดเรียงไฟล์ตามวันที่ / เวลาที่แก้ไข -tตัวเลือกตอบคำถามที่สมบูรณ์; --full-timeไม่เกี่ยวข้องจริงๆ
G-Man กล่าวว่า 'Reinstate Monica'

สิ่งเดียวที่ตัวเลือก -t ไม่ได้ให้คุณปีสำหรับการแก้ไขไฟล์ภายในหกเดือนที่เป็น - เต็มเวลาให้คุณว่า คุณยังสามารถใช้รูปแบบเวลาเพื่อจัดรูปแบบรูปแบบวันที่ตามต้องการ เช่น ls -ltr - เวลาสไตล์ +% Y-% m-% d \% H:% M:% S
Bevan Thomas

ฉันไม่แน่ใจว่าประเด็นของคุณคืออะไร  ls -tไม่ได้ให้โหมดและเจ้าของไฟล์ชื่อโฮสต์และเวอร์ชั่นของระบบปฏิบัติการหรือราคาของชาในจีนเช่นกัน  ls -tไม่แม้แต่แสดงวันที่แก้ไขเลย แต่คำถามไม่ได้เกี่ยวกับการแสดงข้อมูลไฟล์มันเกี่ยวกับการเรียงลำดับไฟล์ตามวันที่แก้ไข คุณไม่ได้ตอบคำถาม คุณกำลังเพิ่มข้อมูลเสริมที่ดีที่จะรู้ เมื่อคุณได้รับ 50 คะแนนชื่อเสียงคุณสามารถโพสต์ข้อมูลประเภทนั้นเป็นความคิดเห็นได้
G-Man กล่าวว่า 'Reinstate Monica'

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