Linux命令:我正在使用以下命令,它返回目录中的最新文件名。
ls -Art | tail -n 1
当我运行此命令时,它返回我最新的文件已更改,这实际上是软链接,我想忽略我的结果中的软链接,并希望获得其他软文链接的文件名我该怎么做才能获得任何快速帮助。
可以指定正则表达式匹配的最新文件名是
rum-12.53.2.war
答案 0 :(得分: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的变量中。通过grepping“^ l”,您只选择了符号链接,使用-v选项可以反转此选择。所以你基本上拥有你想要的东西,唯一的缺点是你需要为ls使用-l选项,否则没有“^ l”的grepping。因此,在第二部分中,您将变量a拆分为“”并填充一个名为aa的数组(抱歉错误的命名)。那么你只需要aa中的最后一项,它应该是文件名。
答案 1 :(得分:0)
- 没有软链接的目录中的最新文件
ls -ArtL | tail -n 1
- 没有扩展名的最新文件
ls -ArtL | sed 's/\(.*\)\..*/\1/' | tail -n 1