ls -a | cut -d "." -f 1
uomo (1) tagliare
Molto pratico, l'opzione -d definisce il delimitatore e il -f quale campo si vuole.
MODIFICA: Include riverfall's lo scenario è anche un pezzo di torta in quanto il taglio può iniziare anche dalla fine, anche se la logica è leggermente diversa. Ecco un esempio con un gruppo di file con nomi casuali, alcuni con due punti, alcune con un singolo punto e alcuni senza estensione:
[email protected]:~/test$ ls
test.001.rpx test.003.rpx test.005.rpx test.007.rpx test.009.rpx testxxx
test.002.rpx test.004.rpx test.006.rpx test.008.rpx test_nonum test_xxx.rtv
[email protected]:~/test$ ls | cut -d "." -f -2
test.001
test.002
test.003
test.004
test.005
test.006
test.007
test.008
test.009
test_nonum
testxxx
test_xxx.rtv
Usando il meno prima campo Numero rende eliminare tutti, ma il indicato i campi (1,2 in questo caso) e metterlo dietro fa iniziare il conteggio dalla fine.
Questa stessa notazione può essere usato per offset e personaggi oltre a dei campi (vedi la pagina man)
FWIW, userei 'ls | sed 's/\ (. * \) \ .. */\ 1 /' 'per rimuovere solo la parte che inizia con il * ultimo * punto. (Inoltre, fai attenzione a '.' in un nome di directory, ad esempio ls ../src – rici
ls -1 e ls si comportano in modo identico quando stdout per ls è una pipe.Non importa davvero ... –
@rici:' sed -e 's /\.[^.]*$//' ' – anishsane