ฉันจะใช้ls
ใน linux เพื่อดูรายการวันที่และชื่อไฟล์ได้เท่านั้น ฉันไม่ต้องการเห็นข้อมูลอื่นเช่นเจ้าของหรือการอนุญาต เป็นไปได้ไหม
ฉันจะใช้ls
ใน linux เพื่อดูรายการวันที่และชื่อไฟล์ได้เท่านั้น ฉันไม่ต้องการเห็นข้อมูลอื่นเช่นเจ้าของหรือการอนุญาต เป็นไปได้ไหม
คำตอบ:
ทำไมไม่ใช้stat
แทนls
?
stat -c "%y %s %n" *
find . -type f -print0 | xargs -0 stat -c "%y %s %n"
stat
คุณสามารถเพิ่มข้อมูลความกว้างให้กับสตริงรูปแบบเช่นฟังก์ชั่น C printf เช่น"%y %8s %n"
ไม่ได้รับการบันทึก แต่ดูเหมือนว่าจะใช้งานได้ (coreutils 8.17, Fedora 18)
ls
ฉันสามารถส่งออกด้วยตัวคั่นถ่านหนึ่งพัน มันทำงานstat
อย่างไร
ls
แต่คุณจะสูญเสียผลประโยชน์ทั้งหมดจาก แล้วสีล่ะ?
คุณสามารถควบคุมได้มากเกี่ยวกับวิธีแสดงรายการไฟล์ด้วย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 คุณสามารถเลือกข้อมูลเวลาที่แตกต่างกันขนาดที่คุณต้องการ (ขนาดไฟล์หรือบล็อกดิสก์ที่ใช้) ฯลฯ คุณสามารถทำให้ปลอดภัยสำหรับชื่อไฟล์ที่ผิดปกติหากต้องการการประมวลผลเพิ่มเติม
%C+
(เอาต์พุต "2016-08-29 + 10: 57: 56.9201257840") และ%Cc
(เอาท์พุท "Mo 29 ส.ค. 2016 10:57:56 CEST")
คุณสามารถใช้ยูทิลิตีอื่นเช่นจัดawk
รูปแบบผลลัพธ์ls
1 :
/bin/ls -ls | awk '{print $7,$8,$9}'
1. ใช่โดยทั่วไปคุณไม่ควรแยกวิเคราะห์ผลลัพธ์ของ lsแต่ในกรณีนี้คำถามจะเรียกมันโดยเฉพาะ ...
ls
เป็นนามแฝง (พูดalias ls='ls -i'
) คุณควรระมัดระวังเป็นอย่างมากหากคุณต้องการแยกวิเคราะห์เอาต์พุต ls
ls
แต่นั่นคือสิ่งที่ OP ต้องการ ...
/bin/ls
จะหลีกเลี่ยงปัญหานามแฝง.)
ls
ที่เราทั้งสองตกลงจะไม่ตอบสนองความต้องการช่องว่าง /bin/ls
ข้อเสนอแนะเป็นหนึ่งที่ดี
-h
เพื่อทำให้มนุษย์อ่านได้ ฉันใช้เฉพาะ: ls -lah | awk '{print $5,$6,$7,$8}'
ซึ่งให้ผล: 4.0K Jan 24 18:17
. จริงอยู่ที่โซลูชันดั้งเดิมไม่ได้พูดอะไรเกี่ยวกับ awk แต่ใน linux เราควรถือว่าเอาต์พุตของกระบวนการจะเป็นอินพุตของกระบวนการอื่นเสมอใช่ไหม ;)
คุณยังสามารถใช้คำสั่ง 'วันที่' มันใช้งานง่ายมาก:
date -r [ชื่อไฟล์]
date -r foo*.txt
->date: extra operand "foo2.txt"
หากคุณต้องการใช้ ls แต่รักษาขนาดที่เหมาะสมคุณสามารถใช้:
ls -Ss1pq --block-size=1
โดยที่ space ถูกกำหนดเป็นตัวคั่นและ f6 หมายถึงฟิลด์ 6
ls -lt | cut -d" " -f6-
คุณสามารถไปป์ไลน์สองคำสั่ง
ls -l|cut -d" " -f5
ls -s1ส่งคืนขนาดไฟล์และชื่อบน AIX เท่านั้นไม่แน่ใจเกี่ยวกับ Linux
ls
ดีมากเนื่องจากมีการเรียงลำดับอย่างรวดเร็วตามวันที่และเวลา แต่การจัดรูปแบบยากที่จะจัดการ ฉันขอแนะนำให้ใช้โทเค็นที่ - เวลาสไตล์เหมือน--time-style='+&%Y%m%d+%H%M%S.%N'
ที่โทเค็นคือ '&' โดยใช้เป็นข้อมูลอ้างอิงคุณสามารถแยกวิเคราะห์เอาต์พุตด้วยเพิ่มเติมsed
เพื่อให้คุณสามารถย้อนรอยก่อนโทเค็นมีขนาด! หากใครต้องการโพสต์ข้อความนี้เป็นคำตอบที่สมบูรณ์อย่าลังเลที่จะนอนตอนนี้ฉันนอนหลับเกินไปแล้ว :)