我的find命令的结果产生以下结果
./alex20_0
./alex20_1
./alex20_2
./alex20_3
我将此结果保存为变量。现在我真正需要的唯一部分是最后一部分或基本上是最高数字或“最新版本”。
因此,从上面的字符串我需要提取的是./alex20_3
并将其保存为变量。有没有办法从find命令中提取最后一个目录?
我会做最后的第n个字符命令来提取它,因为它已经按顺序排列,但是一旦我们得到版本./alex20_10
等它就不会是相同数量的字符。
试试这个:
your_find_command | tail -n 1
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
可能有多种方法可以实现这一目标 -
使用'tail'命令(由@Roadowl建议)
找到分支-name alex * |尾巴-n1
使用'awk'命令
找到分支-name alex * | awk'END {print}'
使用'sed'命令
找到分支-name 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