2015-06-03 21 views

risposta

7

No. pesce ha un set di funzionalità molto più piccola di bash, basandosi su comandi esterni:

$ set filename foo.bar.baz 
$ set rootname (echo $filename | sed 's/\.[^.]*$//') 
$ echo $rootname 
foo.bar 
+0

Grazie, questo è quello che sospettavo. Bene hai postato la soluzione :) –

6

Se si conosce l'estensione (ad esempio _bak, un caso d'uso comune) Questo è forse più conveniente:

for f in (ls *_bak) 
    mv $f (basename $f _bak) 
end 
2

Con il string match funzione incorporata in pesci che si può fare

set rootname (string match -r "(.*)\.[^\.]*\$" $filename)[2] 

La partita stringa restituisce un elenco di 2 elementi. Il primo è l'intera stringa, e la seconda è la prima corrispondenza regexp (le cose all'interno delle parentesi nella regex). Quindi, prendiamo il secondo con il [2].

Problemi correlati