2014-01-14 29 views
0

我需要一個列出特定目錄中的內容的命令。我需要文件名,創建日期和文件大小。這是我的。ls -lth | awk'{printf ....獲取文件列表並添加標題

ls -lth | awk '{printf "%s %s-%s %s %s\n",$9,$6,$7,$8,$5}' >> list.txt 

而我得到的東西是這樣的:

-  
meb.20140112-030003.img Jan-12 13:49 755G 
meb.20140105-030003.img Jan-5 13:55 769G 
meb.20140108-030003.img Jan-7 10:55 739G 

這很好。但我需要刪除第一行「 - 」,而不是添加一個頭文件。我正在尋找這樣的事情:

FILE_NAME     DATE   SIZE 
meb.20140112-030003.img Jan-12 13:49 755G 
meb.20140105-030003.img Jan-5 13:55 769G 
meb.20140108-030003.img Jan-7 10:55 739G 

任何想法?

回答

1

有些人喜歡?

ls -lth | awk 'BEGIN {print "FILE_NAME     DATE   SIZE"} NR>1 {printf "%s %s-%s %s %s\n",$9,$6,$7,$8,$5}' 
+1

如果文件名沒有空格,它看起來可能會更好,如果它是通過'柱-t'過濾。 – John1024

+0

NR> 1做什麼?我知道NR會給你的行數,但NR> 1? – andresg3

+0

@ andresg3,'NR'是當前記錄號,而不是行數。 'NR == 1'表示awk正在處理記錄號1.通常情況下,記錄==一行,除非你重新定義'RS' –

4

我需要的文件的文件名,創建日期和大小。

你不應該分析ls命令的輸出,而使用stat命令是這樣的:

stat -c '%n %y %s' * 
+0

爲什麼不用ls? – andresg3

+2

它通常是不安全的,因爲文件名中可能存在空格/換行符。有關更多詳細信息,請參閱此文章:http://mywiki.wooledge.org/ParsingLs – anubhava