2012-12-03 6 views

risposta

42

utilizzando sed?

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

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

+2

ls -1 e ls si comportano in modo identico quando stdout per ls è una pipe.Non importa davvero ... –

+4

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

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

provare che.

+8

[Non analizzare ls] (http://mywiki.wooledge.org/ParsingLs) - 'per fname in *; do ... ' –

+0

@Glenn - Questo è un approccio corretto, sì. Il concetto UUOC. Pensavo che l'OP implicasse l'uso di ls. Quindi apparentemente Dyno Hungjun Fu. –

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

+1

possono avere più di 1 punto, in particolare pacchetti rpm – riverfall

+0

Qualcuno può dirmi perché ls | cut -d "." -f -2> test.txt non funziona? – holistic

+0

no idea mate. Non ho idea di cosa ti aspetti di vedere. Presumo che tu sappia che devi leggere il file con 'cat', giusto? – runlevel0

Problemi correlati