ls -a | cut -d "." -f 1
Mann (1)
schneiden
Sehr praktisch, die Option -d definiert das Trennzeichen und die -f das Feld, das Sie möchten.
EDIT: Include riverfall's Szenario ist auch ein Stück Kuchen wie Schnitt kann auch vom Ende beginnen, obwohl die Logik etwas anders ist. Hier ist ein Beispiel mit einem Bündel von Dateien mit zufälligen Namen, einige mit zwei Punkten, einige mit einem einzigen Punkt und einig ohne Verlängerung:
[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
Mit dem Minus vor die Feldnummer macht beseitigen sie alle, aber die angezeigten Felder (1,2 in diesem Fall) und setzen es hinterlässt es beginnt vom Ende zu zählen.
Diese gleiche Schreibweise für neben der Felder Offset- und Zeichen verwendet werden (der Mann-Seite)
FWIW, ich würde 'ls | verwenden sed 's/\ (. * \) \ .. */\ 1 /' 'um nur den Teil abzustreifen, der mit dem * letzten * Punkt beginnt. (Achten Sie auch auf '.' in einem Verzeichnisnamen, zB. Ls ../src – rici
ls -1 und ls verhalten sich identisch wenn stdout für ls eine Pipe ist. Ist eigentlich egal ... –
@rici:' sed -e 's /\.[^.]*$//' ' – anishsane