提问人:DDisciple 提问时间:4/19/2019 最后编辑:John KugelmanDDisciple 更新时间:4/20/2019 访问量:1290
如何获取查找命令的最后一个结果?
How to grab the last result of a find command?
问:
我的 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
在最后。顺便说一句,这不一定会提取最新版本,而只会提取 列出的最后一个文件。列出文件的顺序是相当随机的。find
find
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
如果您的实现不支持或不支持,并且您确定文件名没有换行符,您还可以使用sort
tail
-z
find . -maxdepth 1 -name "string" -print | sort -V | tail -n1
上一个:将目录中的最后一个数字递增 1?
下一个:如何从文本文件中删除确切的文本?
评论