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

Bash 如何获取find命令的最后一个结果?,bash,Bash,我的find命令的结果产生以下结果 ./alex20_0 ./alex20_1 ./alex20_2 ./alex20_3 我将此结果保存为变量。现在我唯一真正需要的部分是最后一部分是什么,或者本质上是最高数字或“最新版本” 因此,从上面的字符串中,我只需要提取/alex20\u 3,并将其保存为变量。有没有一种方法可以从find命令中提取最后输出的目录 我会执行最后一个第n个字符的命令来提取它,因为它已经按顺序排列了,但是一旦我们达到版本/alex20\u 10等,它的字符数

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

./alex20_0  
./alex20_1  
./alex20_2  
./alex20_3  
我将此结果保存为变量。现在我唯一真正需要的部分是最后一部分是什么,或者本质上是最高数字或“最新版本”

因此,从上面的字符串中,我只需要提取
/alex20\u 3
,并将其保存为变量。有没有一种方法可以从find命令中提取最后输出的目录

我会执行最后一个第n个字符的命令来提取它,因为它已经按顺序排列了,但是一旦我们达到版本
/alex20\u 10
等,它的字符数就不一样了。

试试这个:

your_find_command | tail -n 1

可以有多种方法来实现这一点-

使用“tail”命令(如@Roadowl所建议)

查找分支-名称alex*| tail-n1

使用“awk”命令

查找分支-名称alex*| awk'END{print}

使用“sed”命令

查找分支-名称alex*| sed-e'$!d'


其他可能的选择是使用bash脚本、perl或任何其他语言。您最好选择您认为更方便的文件。

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

$ ls
alex20_0    alex20_1    alex20_2    alex20_3
$ find .  -iname "*alex*" -print | sort  | tail -n 1
./alex20_3

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

find . -maxdepth 1 -name "string" -print0 | sort -zV | tail -zn1
如果
sort
tail
的实现不支持
-z
,并且您确定文件名没有换行符,则也可以使用

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

我的find命令是这样的(find.-maxdepth 1-name“string”-print),我将在最末端插入| tail-n1。顺便说一句,这不一定提取最新版本,只提取
find
列出的最后一个文件。
find
列出文件的顺序相当随机。