ทำไม“ ls -all” ถึงแสดงเวลาสำหรับบางไฟล์ แต่เฉพาะปีต่อปีเท่านั้น?


32

หากคุณออกls -allคำสั่งบางไฟล์หรือไดเรกทอรีมีปีและบางส่วนมีเวลาหรือไม่ ทำไมบางคนถึงแสดงปีในขณะที่คนอื่น ๆ แสดงเวลา? ตัวแทนเวลาเป็นเวลาที่สร้างไฟล์หรือไม่

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


15
-allคุณกำลังใช้ โปรดสังเกต L สุดท้ายคือฟุ่มเฟือยเพราะallไม่ได้หมายถึงคำว่า "all" แต่สำหรับ-a(แสดงไฟล์ทั้งหมด) และ-l(รูปแบบรายการแบบยาว) ทั้งหมดเข้าด้วยกันls -alเหมือนกับสิ่งที่คุณใช้
fedorqui

คำตอบ:


35

ตามค่าเริ่มต้นการประทับเวลาของไฟล์จะแสดงรายการในรูปแบบย่อโดยใช้วันที่เช่น 'Mar 30 2002' สำหรับการประทับเวลาที่ไม่ได้มาล่าสุดและวันที่ไม่มีปีและเวลาเช่น 'Mar 30 23:45' สำหรับการประทับเวลาล่าสุด รูปแบบนี้สามารถเปลี่ยนแปลงได้ขึ้นอยู่กับสถานที่ปัจจุบันตามรายละเอียดด้านล่าง

การประทับเวลาจะถือเป็นล่าสุดหากน้อยกว่าหกเดือนและไม่ได้ลงวันที่ในอนาคต หากการประทับเวลาวันนี้ไม่ได้อยู่ในรูปแบบล่าสุดการประทับเวลานั้นจะเกิดขึ้นในอนาคตซึ่งหมายความว่าคุณอาจมีปัญหาการเอียงนาฬิกาซึ่งอาจทำให้โปรแกรมแตกเช่นทำให้ต้องใช้การประทับเวลาของไฟล์

ที่มา: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps

เพื่อแสดง:

$ for i in {1..7}; do touch -d "$i months ago" file$i; done
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Sep 21 02:38 file1
-rw-r--r-- 1 terdon terdon 0 Aug 21 02:38 file2
-rw-r--r-- 1 terdon terdon 0 Jul 21 02:38 file3
-rw-r--r-- 1 terdon terdon 0 Jun 21 02:38 file4
-rw-r--r-- 1 terdon terdon 0 May 21 02:38 file5
-rw-r--r-- 1 terdon terdon 0 Apr 21  2015 file6
-rw-r--r-- 1 terdon terdon 0 Mar 21  2015 file7

4
น่าสังเกตว่าเวลาในอนาคตจะแสดงปีมากกว่าเวลา สิ่งนี้สามารถเกิดขึ้นได้หากคุณแลกเปลี่ยนไฟล์ระหว่างโฮสต์ที่นาฬิกาไม่ซิงค์กัน
kasperd

24

เวลาที่แสดงคือเวลาแก้ไข โปรดทราบว่าls -allเป็นสิ่งเดียวที่แตกต่างจากls -l -a ls --allไม่มีเหตุผลที่จะใช้สองครั้งlในตัวอย่างของคุณ ls -al --full-timeหากคุณต้องการที่จะเห็นการปรับเปลี่ยนเวลาสำหรับแต่ละไฟล์ที่คุณสามารถใช้


4
ใน GNU lsสำหรับการใช้งานปกติ--time-style=long-isoอาจมีประโยชน์มากกว่า --full-timeแสดงวินาทีรวมถึงเก้า ciphers (!) หลังจากจุดทศนิยมที่ไม่จำเป็น
pabouk

1
--full-timeหมายถึงดังนั้นคุณก็สามารถใช้-l ls -a --full-time
kasperd

6

หากวันที่ / เวลาที่พยายามแสดงอยู่ในช่วงหกเดือนที่ผ่านมา lsแสดงวันที่และเวลา หากนานกว่าหกเดือน - หรือในอนาคต - lsแสดงวันที่และปี

ตามที่ระบุไว้ในคำตอบอื่น ๆ

  • ls -llเทียบเท่ากับls -lและ
  • ls -allเทียบเท่ากับls -alซึ่งเทียบเท่ากับls -a -l, และls -l -als -la

ด้วย-lตัวเลือกให้lsแสดงวันที่ / เวลาที่แก้ไขของไฟล์ (รวมถึงไดเรกทอรีเนื่องจาก "ทุกอย่างเป็นไฟล์") ยกเว้น

  • -c มีการระบุด้วยซึ่งในกรณีนี้จะแสดงเวลาเปลี่ยนหรือ
  • -u มีการระบุไว้ด้วยซึ่งในกรณีนี้จะแสดงเวลาเข้าถึง

ดูls (1)สำหรับข้อมูลเพิ่มเติม


3

ผลลัพธ์นี้ถูกปรับสำหรับเนื้อหาข้อมูลสูงสุด: เมื่อเวลา "ใกล้พอ" กับเวลาปัจจุบัน (ไม่แน่ใจทั้งหมด แต่ฉันคาดเดาภายในหกเดือน) ปีจะถูกลบออกและเวลาของวันที่แสดงแทน มิฉะนั้นจะแสดงปี นี่เป็นค่าเริ่มต้นส่วนใหญ่เป็นเพราะคุณไม่สนใจเรื่องเวลาที่แน่นอนของสิ่งที่ถูกแก้ไขหากเวลานั้นเป็นปีที่ผ่านมา coreutils ของ GNUlsมี--time-styleตัวเลือกเพื่อควบคุมสิ่งนี้อย่างชัดเจน


0

คุณรู้อะไรไหม มันเพิ่งปรากฏเวลาชั่วโมงในวันที่ 20 ตุลาคมซึ่งเป็นวันนี้ซึ่งหมายความว่ามันจะแสดงครั้งสุดท้ายที่คุณแก้ไขไฟล์ แต่ในวันอื่น ๆ ที่ไม่ใช่วันนี้มันจะแสดงเฉพาะวันที่ไม่มีเวลา

ปรากฏว่าไม่ใช่สิ่งนี้ตามที่โธมัสตอบ ฉันแค่พยายามใช้วิธีการหักเงินไม่มั่นใจว่าจะมีข้อสรุปที่ถูกต้องหลังจากทั้งหมด


1
Aug 6 19:50 .config, Aug 6 19:48 VNCHOWTO.
G-Man กล่าวว่า 'Reinstate Monica'

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