ls -l
แสดงการประทับเวลาการปรับเปลี่ยนของไฟล์ไม่เกินวินาทีเท่านั้น หากไฟล์สองไฟล์มีการประทับเวลาเท่ากันเป็นวินาที แต่ถูกแก้ไขในเวลาเดียวกันจะls -lt
เรียงลำดับไฟล์ตามลำดับของ mtimes ที่ถูกต้องหรือเพียงแค่ mtimes โดยประมาณสูงสุดวินาที พล)?
ls -l
แสดงการประทับเวลาการปรับเปลี่ยนของไฟล์ไม่เกินวินาทีเท่านั้น หากไฟล์สองไฟล์มีการประทับเวลาเท่ากันเป็นวินาที แต่ถูกแก้ไขในเวลาเดียวกันจะls -lt
เรียงลำดับไฟล์ตามลำดับของ mtimes ที่ถูกต้องหรือเพียงแค่ mtimes โดยประมาณสูงสุดวินาที พล)?
คำตอบ:
นั่นขึ้นอยู่กับการls
ดำเนินการ ในบรรดา 4 ที่พบในระบบ GNU / Linux ที่นี่:
$ touch a; touch c; touch b; stat -c %y a c b
2018-01-10 12:52:21.367640342 +0000
2018-01-10 12:52:21.371640148 +0000
2018-01-10 12:52:21.375639952 +0000
GNUls
, หนึ่งในโครงการ GNU (จากคอลเลกชั่นcoreutils GNU ) โดยทั่วไปแล้วจะพบได้ในระบบ GNU เช่น Debian (Linux หรือ kFreeBSD kernels), Cygwin หรือ Fedora
$ gnu-ls -rt
a c b
ls
จากHeirloom Toolchestพอร์ตของเครื่องมือ OpenSolaris นี้:
$ heirloom-ls -rt
a b c
ls
จากAT & T ที่มาเปิดคอลเลกชันksh93
ที่อาจจะสร้างขึ้นใน อีกอันหนึ่งที่มีนามสกุลที่ค่อนข้างแฟนซี:
$ ast-ls -rt
a c b
$ PATH=/opt/ast/bin:$PATH ksh93 -c 'type ls; ls -rt'
ls is a shell builtin version of /opt/ast/bin/ls
a c b
busybox (ตามที่พบ (หรืออนุพันธ์) บนระบบที่ใช้ Linux ส่วนใหญ่ (โดยทั่วไปฝังอยู่):
$ busybox ls -rt
c b a
ดังนั้นของเหล่านั้น GNU และ ast จึงls
พิจารณาส่วนที่สองเป็นเศษส่วน ส่วนอื่น ๆ กลับไปใช้การเปรียบเทียบคำสำหรับไฟล์ที่แก้ไขล่าสุดภายในวินาทีเดียวกัน เพียง busybox ls
เกียรตินิยม-r
มี
ในการทดสอบของฉัน FreeBSD ls
ยังรองรับความแม่นยำย่อยวินาที (หากเปิดใช้งานที่ระดับ VFS ดูvfs.timestamp_precision
sysctl)
zsh
globs (ที่om
มีคุณสมบัติ glob เพื่อสั่งซื้อในเวลาการปรับเปลี่ยนOm
สำหรับการย้อนกลับ) ยังใช้เวลาเต็ม:
$ echo *(Om)
a c b
[ file1 -nt file2 ]
ที่ได้รับการสนับสนุนโดยทั่วไปยังสนับสนุนเมล็ดย่อยที่สอง
ในส่วนที่เกี่ยวกับls
การนำไปใช้ของ GNU การรันls -l
จะเรียงลำดับไฟล์ตามลำดับตัวอักษรและls -lt
จะเรียงลำดับไฟล์ตามลำดับเวลาการแก้ไขใหม่ล่าสุดก่อนเพื่อความแม่นยำสูงสุดที่รองรับโดยระบบไฟล์พื้นฐาน คุณสามารถตรวจสอบได้โดยใช้--full-time
ตัวเลือก
ดังนั้นเพื่อตอบคำถามของคุณใช่ให้ขยายได้มากที่สุด แต่เมื่อคุณใช้เท่านั้น-t
(มิฉะนั้นจะเป็นค่าเริ่มต้นเป็นตัวอักษร) และใช้การใช้งานที่รองรับ (ดู
คำตอบของStéphaneสำหรับรายละเอียดเพิ่มเติม) ตัวอย่างเช่นext4
สามารถรองรับความแม่นยำระดับนาโนวินาทีซึ่งให้ inodes ใหญ่พอที่จะเก็บข้อมูลการประทับเวลาที่ต้องการ
คุณสามารถตรวจสอบว่าถ้าคุณเปรียบเทียบผลลัพธ์ของ
ls -lat
และ
ls -lat --full-time
ไม่มีอะไรเกี่ยวกับการเรียงลำดับโดยพลการ
ใช่! ฉันจะ.
หากต้องการทดสอบให้สร้างไฟล์สองไฟล์ที่มีเวลาต่างกันเล็กน้อย
$ touch aa; sleep 0.2; touch bb
ตรวจสอบเวลาแก้ไข:
$ stat -c %y bb aa
2018-01-07 20:51:19.364248042 0000
2018-01-07 20:51:19.072248226 0000
รายการจะใช้ความแตกต่างดังกล่าว:
$ ls -lt aa bb
-rw-r--r-- 1 user user 0 Jan 7 20:51 bb
-rw-r--r-- 1 user user 0 Jan 7 20:51 aa
ด้วย--full-time
ความแตกต่างจะมีความชัดเจน
$ ls -lt --full-time aa bb
-rw-r--r-- 1 user user 0 2018-01-07 20:51:19.364248042 0000 bb
-rw-r--r-- 1 user user 0 2018-01-07 20:51:19.072248226 0000 aa
bb
และaa
ถอยหลัง