2012-12-03 2 views

Antwort

42

mit sed?

ls -1 | sed -e 's/\..*$//' 
+7

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

+2

ls -1 und ls verhalten sich identisch wenn stdout für ls eine Pipe ist. Ist eigentlich egal ... –

+4

@rici:' sed -e 's /\.[^.]*$//' ' – anishsane

12
ls | while read fname 
do 
    echo ${fname%%.*} 
done 

Versuchen Sie das mal.

+8

[Sie analysieren ls nicht] (http://mywiki.wooledge.org/ParsingLs) - 'für fname in *; tun ... ' –

+0

@Glenn - Das ist ein richtiger Ansatz, ja. Das UUOC-Konzept. Ich dachte, das OP beinhalte ls. Offensichtlich tat Dyno Hungjun Fu. –

4
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)

+1

Dateinamen können habe mehr als 1 Punkt, vor allem RPM-Pakete – riverfall

+0

Kann mir jemand sagen, warum ls | cut -d "." -f-2> test.txt funktioniert nicht? – holistic

+0

keine Ahnung, Kumpel. Ich habe keine Ahnung, was Sie erwarten zu sehen. Ich nehme an, dass dir bewusst ist, dass du die Datei mit 'Katze' lesen musst, oder? – runlevel0

Verwandte Themen