如何获取find命令的最后结果?

问题描述 投票:1回答:4

我的find命令的结果产生以下结果

./alex20_0  
./alex20_1  
./alex20_2  
./alex20_3  

我将此结果保存为变量。现在我真正需要的唯一部分是最后一部分或基本上是最高数字或“最新版本”。

因此,从上面的字符串我需要提取的是./alex20_3并将其保存为变量。有没有办法从find命令中提取最后一个目录?

我会做最后的第n个字符命令来提取它,因为它已经按顺序排列,但是一旦我们得到版本./alex20_10等它就不会是相同数量的字符。

bash
4个回答
4
投票

试试这个:

your_find_command | tail -n 1

2
投票

find可以按任意顺序列出您的文件。要提取最新版本,您必须对find的输出进行排序。最安全的方法是

find . -maxdepth 1 -name "string" -print0 | sort -zV | tail -zn1

如果您的sorttail的实现不支持-z并且您确定文件名没有换行符,您也可以使用

find . -maxdepth 1 -name "string" -print | sort -V | tail -n1

0
投票

可能有多种方法可以实现这一目标 -

使用'tail'命令(由@Roadowl建议)

找到分支-name alex * |尾巴-n1

使用'awk'命令

找到分支-name alex * | awk'END {print}'

使用'sed'命令

找到分支-name alex * | sed -e'$!d'

其他可能的选项是使用bash脚本,perl或任何其他语言。你最好的选择是你找到的更方便。


0
投票

由于您希望文件名按最高版本排序,因此您可以尝试以下操作

$ ls
alex20_0    alex20_1    alex20_2    alex20_3
$ find .  -iname "*alex*" -print | sort  | tail -n 1
./alex20_3
© www.soinside.com 2019 - 2024. All rights reserved.