2012-12-03 3 views

答えて

42

sedを使用していますか?

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

FWIW、 'ls |最後の*ドットで始まる部分だけを取り除くためにsed '/ \(。* \)\ .. */\ 1 /' ' (また、ls ../srcのようなディレクトリ名で '.'を監視するls.1/src – rici

+2

ls -1 lsのstdoutがパイプの場合、lsは同じように動作します。実際には関係ありません... –

+4

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

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

ことを試してみてください。

+8

[LSを解析していない](http://mywiki.wooledge.org/ParsingLs) - 'について*の中のfname。 do ... ... –

+0

@グレン - それは正しいアプローチです、はい。 UUOCのコンセプト私はOPがlsを使って暗示していると思った。だから明らかにDyno Hungjun Fuをした。 –

4
ls -a | cut -d "." -f 1 

男性は(1)非常に便利な

をカットし、-dスイッチを区切りとしたいフィールド-fを定義します。

EDIT:riverfall'sも含まれていますシナリオは切り口が切り口としても始まりますが、ロジックは多少異なります。ここでは、ランダムな名前を持つファイルの束を持つ例は、2つのドット、拡張子のない単一のドットでいくつかの、いくつかといくつか:マイナスフィールド前に番号を使用して

[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 

なりますが、それはすべてを排除しかし示されましたフィールド(この場合は1,2)を入れておくと、最後からカウントを開始します。

この同じ表記法は、フィールドのほかに、オフセットと文字のために使用することができる

(manページを参照してください)

+1

ファイル名は1ドット以上、特にrpmパッケージを持っています – riverfall

+0

ls | cut -d "をなぜ教えてもらえませんか?-f -2> test.txtはうまくいかないでしょうか? – holistic

+0

あなたは何を見たいのか分かりません。あなたは 'cat'でファイルを読まなければならないことを知っていると思いますよね? – runlevel0

関連する問題