web-dev-qa-db-ja.com

lsを使用して、拡張子(ドットの後の部分)を印刷せずにファイルを一覧表示する方法は?

いくつかのファイルがあるディレクトリがあるとします:

$ ls
a.c  b.c  e.c  k.cpp  s.Java

ファイル拡張子(ドットを含むドットに続く部分)なしで結果を表示するにはどうすればよいですか?このような:

$ <some command>
a
b
e
k
s
33
Yishu Fang

sedを使用していますか?

ls -1 | sed -e 's/\..*$//'
50
Dyno Fu
ls | while read fname 
do
    echo ${fname%%.*}
done

やってみて.

12
jim mcnamara
ls -a | cut -d "." -f 1

男(1)カット

非常に便利なのは、-dスイッチが区切り文字と-fフィールドを定義することです。

編集: riverfall's シナリオを含めることも簡単です。カットは最後からでも開始できますが、ロジックは多少異なります。ここに、ランダムな名前のファイルの束、2つのドット、1つのドット、および拡張子のないファイルの例を示します。

runlevel0@ubuntu:~/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


runlevel0@ubuntu:~/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

マイナスbeforeを使用すると、フィールド番号は指定されたフィールド(この場合は1,2)をすべて削除し、後ろに置くとカウントを開始します終わり。

フィールドとは別に、この同じ表記をオフセットと文字に使用できます(マニュアルページを参照)

7
runlevel0