2010-11-03 8 views
10

Napisałem skrypt budujący i chciałbym móc wybrać najnowszą wersję skryptu podczas instalacji, np. nazwa pakietu to package_X.X.X.tar.gz i jest wiele kopii.Jak mogę wybrać nazwę pliku z najwyższym numerem wersji?

Czy istnieje sposób skierowania polecenia build do package_Y.tar.gz? gdzie Y = max (X.X.X)?

+1

Możesz użyć wyrażenia regularnego, aby wyodrębnić informacje o wersji, ale nie sądzę, że będziesz w stanie uzyskać tylko reg exp tutaj. – Kendrick

Odpowiedz

18

Jeśli pliki są równe z wyjątkiem numerów wersji, można użyć coś takiego

ls -v | tail -n 1 

od człowieka-stronie ls:

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

Przykład użycia:

$ 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

należy pamiętać, że działa to tylko wtedy, gdy przedrostki przed numerami wersji są takie same. –

+0

Dzięki, aby usunąć zbędne pliki, użyję: ls -v pakiet * tar.gz | tail -n 1 –

+0

ah, to jest inteligentne – aioobe

Powiązane problemy