4

我在用

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 个字符中删除现在无效的结果。

那么如何细化呢。

4

3 回答 3

9

如果不需要,为什么要使用-l标志?如果您不需要更多信息而不是尝试“解析”其非统一输出(强奸糟糕的文本处理实用程序......),ls请简单地输出文件名。ls

LAST_MODIFIED_FILE=`ls -tr | tail -n 1`
于 2013-04-02T06:04:33.677 回答
1

如果您真的想使用您的方法来实现这一点,那么请使用awk而不是cut

ls -ltr /var/log/ |tail -n 1| awk '{print $9}'
于 2013-04-02T06:59:45.237 回答
1

扩展用户 user529758 答案,可以根据文件名给出结果

根据文件名使用下面的命令

ls -tr Filename* | tail -n 1
于 2018-10-29T13:00:03.993 回答