我正在使用
ls -ltr /homedir/mydirectory/work/ |tail -n 1|cut -d ' ' -f 10
但这是获得理想结果的一种非常粗糙的方式。而且它也是不可靠的。 我得到的输出只是执行
ls -ltr /homedir/mydirectory/work/ |tail -n 1
是
-rw-r--r-- 1 user pusers 1764 Apr 1 12:06 firstfile.xml
所以在这里我得到了文件名。 但是如果执行上述命令的输出就像
那样-rw-r--r-- 100 user pusers 1764 Apr 1 12:06 firstfile.xml
第一个命令失败!可以理解的是,因为我正在削减第10个字符的结果,而这个字符现在没有效果。
所以如何改进它。
答案 0 :(得分:7)
如果您不需要-l
,为什么要使用ls
标记?如果您不需要更多信息而不是尝试“解析”其非统一输出(强奸不良文本处理实用程序......),请ls
只输出文件名。
LAST_MODIFIED_FILE=`ls -tr | tail -n 1`
答案 1 :(得分:1)
如果你真的想用你的方法实现这个目的,那么,使用 awk 代替 cut
ls -ltr /var/log/ |tail -n 1| awk '{print $9}'
答案 2 :(得分:1)
扩展的用户user529758答案可以按文件名给出结果
根据文件名在逗号下方使用
ls -tr Filename* | tail -n 1