は、私はいくつかのファイルとディレクトリがあるとします。lsを使って、拡張子を印刷しないでファイルをリストする方法(ドットの後ろの部分)?
$ ls
a.c b.c e.c k.cpp s.java
私は、ファイルの拡張子(そのドットを含むドットを、以下の部分)なしで結果を表示するにはどうすればよいですか?このように:
$ <some command>
a
b
e
k
s
は、私はいくつかのファイルとディレクトリがあるとします。lsを使って、拡張子を印刷しないでファイルをリストする方法(ドットの後ろの部分)?
$ ls
a.c b.c e.c k.cpp s.java
私は、ファイルの拡張子(そのドットを含むドットを、以下の部分)なしで結果を表示するにはどうすればよいですか?このように:
$ <some command>
a
b
e
k
s
sedを使用していますか?
ls -1 | sed -e 's/\..*$//'
ls | while read fname
do
echo ${fname%%.*}
done
ことを試してみてください。
[LSを解析していない](http://mywiki.wooledge.org/ParsingLs) - 'について*の中のfname。 do ... ... –
@グレン - それは正しいアプローチです、はい。 UUOCのコンセプト私はOPがlsを使って暗示していると思った。だから明らかにDyno Hungjun Fuをした。 –
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ページを参照してください)
FWIW、 'ls |最後の*ドットで始まる部分だけを取り除くためにsed '/ \(。* \)\ .. */\ 1 /' ' (また、ls ../srcのようなディレクトリ名で '.'を監視するls.1/src – rici
ls -1 lsのstdoutがパイプの場合、lsは同じように動作します。実際には関係ありません... –
@rici:' sed -e 's /\.[^.]*$//' – anishsane