いくつかのファイルを含むディレクトリがあるとします。
$ 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 -a | cut -d "." -f 1
男 (1) カット
非常に便利な -d スイッチは、区切り文字と -f 必要なフィールドを定義します。
編集:ロジックは多少異なりますが、カットも最後から開始できるため、リバーフォールのシナリオを含めることも簡単です。これは、ランダムな名前のファイルの束の例です。2つのドットを持つもの、単一のドットを持つもの、拡張子のないものがあります:
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
フィールド番号の前にマイナスを使用すると、指定されたフィールド (この場合は 1,2) 以外のすべてが削除され、後ろにマイナスを配置すると、最後からカウントが開始されます。
これと同じ表記法は、フィールド以外のオフセットや文字にも使用できます (man ページを参照してください)。