我的find命令的结果产生以下结果
./alex20_0
./alex20_1
./alex20_2
./alex20_3
我将此结果另存为变量。现在我真正需要的唯一部分是最后一部分,或者本质上是最高编号或“最新版本”。
因此,从上面的字符串中,我需要提取的全部是./alex20_3
并将其另存为变量。有没有一种方法可以只提取find命令输出的最后一个目录?
我将执行最后n个字符命令以提取它,因为它已经按顺序提取了,但是一旦到达./alex20_10
版等,它就不会是相同数量的字符。
答案 0 :(得分:4)
尝试一下:
your_find_command | tail -n 1
答案 1 :(得分:2)
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
答案 2 :(得分:0)
可能有多种方法可以实现这一目标-
使用“ tail”命令(由@Roadowl建议)
查找分支-name alex * |尾巴-n1
使用“ awk”命令
查找分支-name alex * | awk'END {print}'
使用“ sed”命令
查找分支-name alex * | sed -e'$!d'
其他可能的选项是使用bash脚本,perl或任何其他语言。最好的选择就是找到一个更方便的选择。
答案 3 :(得分:0)
由于要按最高版本对文件名进行排序,因此可以尝试如下操作
$ ls
alex20_0 alex20_1 alex20_2 alex20_3
$ find . -iname "*alex*" -print | sort | tail -n 1
./alex20_3