2010-11-03 12 views
10

Escribí un script de construcción y me gustaría poder seleccionar la última versión del script cuando se instala, p. el nombre del paquete es package_X.X.X.tar.gz y hay múltiples copias.¿Cómo puedo seleccionar el nombre de archivo con el número de versión más alto?

¿Hay alguna manera de señalar el comando de compilación a package_Y.tar.gz? donde Y = max (X.X.X)?

+1

Puedes usar una expresión regular para extraer la información de la versión, pero no creo que puedas arreglárrtelas con solo reg exp aquí. – Kendrick

Respuesta

18

Si los archivos son iguales a excepción de los números de versión, podría utilizar algo así como

ls -v | tail -n 1 

Desde la página de manual de ls:

... 
-v  natural sort of (version) numbers within text 
... 

Ejemplo de uso:

$ ls 
package_1.5.7.9.tar.gz package_2.5.3.9.tar.gz package_4.6.1.0.tar.gz 
$ ls -v | tail -n 1 
package_4.6.1.0.tar.gz 
+0

tenga en cuenta que esto solo funciona si los prefijos antes de los números de versión son los mismos. –

+0

Gracias, para eliminar archivos extraños que usaré: ls -v paquete * tar.gz | tail -n 1 –

+0

ah, eso es inteligente – aioobe

Cuestiones relacionadas