如何在目录中单独获取最新的文件名?

时间:2013-04-02 05:57:12

标签: linux

我正在使用

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个字符的结果,而这个字符现在没有效果。

所以如何改进它。

3 个答案:

答案 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