2013-12-20 107 views
0

我每天都需要在測試過程中觀察日誌。這在*中總是很痛苦,因爲我總是必須進入日誌目錄,複製最後一個目錄的名稱,而不是複製目錄中最後一個日誌文件的名稱並拖拽它,這需要花費很多時間,我想知道如果有任何組合的命令會自動執行此操作,那麼我可以將它混淆。在路徑中輸入最後一個目錄,並在目錄中輸入最後一個文件

所以我知道要選擇最後一個文件/目錄,我可以用這個:

ls | tail -1 

我知道看日誌文件的更新中,我可以使用:

tail -f 

但有組合命令會這樣:

  1. 選擇日誌目錄中的最後一個目錄
  2. 在該目錄
  3. 選擇最後.log文件
  4. 「尾-f」在direcotry

的最後一個文件謝謝你的幫助。

+0

決不尾/頭'ls'輸出;而是使用'find'。您可以控制各種其他參數到您的搜索。關於你的問題,你不能找到最近更新的文件並尾巴嗎? – SuperSaiyan

回答

2

sort files by date reliably

list_date_sorted_ascending() { 
    while IFS= read -r -d '' -u 9 
    do 
     printf '%q\0' "${REPLY#* }" 
    done 9< <(find "$1" -mindepth 1 -maxdepth 1 -printf '%[email protected]' -exec printf ' %s\0' {} \; | sort --general-numeric-sort --zero-terminated) 
} 

爲了能夠use head and tail on NUL-separated output

nul_terminated() { 
    tr '\0\n' '\n\0' | "[email protected]" | tr '\0\n' '\n\0' 
} 

將其組合在一起:

tail -f "$(list_date_sorted_ascending /var/log | nul_terminated tail -n 1)" 
+0

輝煌。奇蹟般有效。 –

0

如果你當前的工作目錄包含日誌文件夾,你可以試試這個:

dir=$(ls -dt * | sed q); tail -1 $dir/$(ls -t $dir | sed q) 

sed q相同頭-1)

相關問題