Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在目录中单独获取最新的文件名?_Linux - Fatal编程技术网

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

Linux 如何在目录中单独获取最新的文件名?,linux,Linux,我正在使用 ls -ltr /homedir/mydirectory/work/ |tail -n 1|cut -d ' ' -f 10 但是,这是一种非常粗糙的方法来获得想要的结果,而且也是不可靠的。 我得到的输出只是执行 ls -ltr /homedir/mydirectory/work/ |tail -n 1 是 所以这里我得到了文件名。 但是如果执行上述命令的输出如下 -rw-r--r-- 100 user pusers 1764 Apr 1 12:06 firstfile.xml

我正在使用

ls -ltr /homedir/mydirectory/work/ |tail -n 1|cut -d ' ' -f 10
但是,这是一种非常粗糙的方法来获得想要的结果,而且也是不可靠的。 我得到的输出只是执行

ls -ltr /homedir/mydirectory/work/ |tail -n 1

所以这里我得到了文件名。 但是如果执行上述命令的输出如下

-rw-r--r-- 100 user pusers 1764 Apr  1 12:06 firstfile.xml
第一个命令失败!可以理解的是,我将第10个字符的结果删去了,现在这个结果已经无效了


那么如何改进它。

如果不需要,为什么要使用
-l
标志来表示
ls
?Make
ls
如果不需要更多信息,只需输出文件名,而不是尝试“解析”其非统一输出(强奸糟糕的文本处理实用程序…)


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

ls -ltr /var/log/ |tail -n 1| awk '{print $9}'

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

ls -tr Filename* | tail -n 1
根据文件名使用以下命令

ls -tr Filename* | tail -n 1

“最新”是指修改日期是最近的文件吗?是的。意思是说。我想要一个文件名,但我想要文件名。这就是要求。所以,必须使用@R11G的“切割”不,你不需要。如果不是文件名,你认为ls的输出是什么?你尝试过我提出的解决方案吗?是的。我只是试了一下。我仍然感到困惑的是,如果第二列(指向该文件/目录的硬链接计数)是两位/三位数字——我之前使用“cut”仅获取文件名的命令——将失败。如何克服这个问题?@R11G如果您只需要文件名,那么我的代码就可以了。
ls -tr Filename* | tail -n 1