2013-12-20 63 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)

相关问题