2012-07-19 249 views
-2

我跑ls -l這帶來了以下的輸出:「LS」命令輸出

-rw-r----- 1 webadm webgrp 168 Jul 19 16:00 SYNCHRO_20120719_1600.csv

有沒有辦法有剛剛拿到最後兩個字段?即:

16:00 SYNCHRO_20120719_1600.csv

+0

如果我們要標記這個問題,那它不應該至少遷移到適當的地方(即超級用戶)嗎? – 2012-07-19 15:13:44

回答

1

試試這個:

ls -l | awk '{print $(NF-1), " ", $NF}' 

它將顯示就行了,這是時間的名稱下一個到最後一個和最後一個領域目錄條目並且不依賴於對於字段的特定數字。

但是可能會產生包含空白的名稱問題。

請參閱this page關於使用'ls'進行處理,由@CharlesDuffy提供,這有點破壞了上面的方法:-) ..所以提出的快速解決方案應該在該上下文中查看。

+0

不只是帶空格的名字 - 一般來說'ls'是如何命名的(包括具有其他形式的非可打印字符的名稱)在實現中並沒有很好的定義。更好地使用shell globbing來獲取名稱,以及其他東西(可以用ls)來讀取他們的時間。見http://mywiki.wooledge.org/ParsingLs – 2012-07-19 14:28:52

+0

@CharlesDuffy感謝您提供的反饋,有用的信息等。我同意,這是一個尷尬的(很可能是「不確定」)解決方案。 – Levon 2012-07-19 14:31:04

1

這應該做你想要什麼:

ls -l | awk '{print $8" "$9}' 
+0

這不適用於帶空格的文件名。 – 2012-07-19 14:22:41

+0

我完全同意! – 2012-07-19 14:25:30

+0

對於我的Linux帳戶,我不得不使用字段$ 7和$ 8 – Levon 2012-07-19 14:26:26

1

在一個系統與GNU日期:

for f in *; do 
    printf '%s %s\n' "$(date +%H:%M -r "$f")" "$f" 
done 

這將正確的文件名與工作空間 - 甚至是用換行的文件名,但它將無法區分文件名嵌入的換行符和記錄分隔的換行符。 (如果這很重要,請使用空分隔符)。