如何获取查找命令的最后一个结果?

How to grab the last result of a find command?

提问人:DDisciple 提问时间:4/19/2019 最后编辑:John KugelmanDDisciple 更新时间:4/20/2019 访问量:1290

问:

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

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

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

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

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

巴什

评论


答:

6赞 user2849202 4/19/2019 #1

试试这个:

your_find_command | tail -n 1

评论

0赞 DDisciple 4/19/2019
我的查找命令是这样的(查找 . -maxdepth 1 -name “string” -print)我将在哪里插入 |尾 -n 1???
4赞 Socowi 4/19/2019
在最后。顺便说一句,这不一定会提取最新版本,而只会提取 列出的最后一个文件。列出文件的顺序是相当随机的。findfind
0赞 Rahul R. 4/19/2019 #2

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

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

查找分支机构 -Name Alex* |尾巴 -n1

使用“awk”命令

查找分支机构 -Name Alex* |awk '结束{打印}'

使用“sed”命令

查找分支机构 -Name Alex* |sed -e '$!d'

其他可能的选项是使用 bash 脚本、perl 或任何其他语言。你最好的选择是你觉得更方便的那个。

0赞 Devesh Kumar Singh 4/19/2019 #3

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

$ ls
alex20_0    alex20_1    alex20_2    alex20_3
$ find .  -iname "*alex*" -print | sort  | tail -n 1
./alex20_3
2赞 Socowi 4/19/2019 #4

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

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

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

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