0

Linux 命令:我使用以下命令返回目录中的最新文件名。

ls -Art | tail -n 1

当我运行此命令时,它返回我最新更改的文件,这实际上是软链接,我想在我的结果中忽略软链接,并希望获取除软链接之外的文件名我该如何做任何快速帮助表示赞赏。

可能我可以指定正则表达式匹配的最新文件文件名是

rum-12.53.2.war
4

2 回答 2

0

ls 的 -L 选项确实取消引用链接,即您将看到引用的信息而不是链接。这是你想要的吗?或者您想完全忽略链接?

如果您想完全忽略链接,您可以使用此解决方案,尽管我确信存在一个更简单的解决方案:

a=$( ls -Artl | grep -v "^l" | tail -1 )

aa=()
for i in $(echo $a | tr " " "\n")
do
    aa+=($i)
done

aa_length=${#aa[@]}

echo ${aa[aa_length-1]}

首先,您将 ls 的输出存储在一个名为 a 的变量中。通过搜索“^l”,您只选择了符号链接,并使用 -v 选项反转此选择。所以你基本上有你想要的,唯一的缺点是你需要对 ls 使用 -l 选项,否则没有“^l”的 grepping。因此,在第二部分中,您将变量 a 拆分为 " " 并填充一个名为 aa 的数组(抱歉命名错误)。那么你只需要aa中的最后一项,它应该是文件名。

于 2013-01-03T17:35:36.247 回答
0

-- 没有软链接的目录中的最新文件

ls -ArtL | tail -n 1

-- 没有扩展名的最新文件

ls -ArtL | sed 's/\(.*\)\..*/\1/' | tail -n 1
于 2013-01-03T18:27:24.903 回答