Подтвердить что ты не робот

Используя ls, как перечислять файлы без печати расширения (часть после точки)?

Предположим, что у меня есть каталог с некоторыми файлами:

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

Как я могу отобразить результат без расширения файла (часть, следующая за точкой, включая эту точку)? Вот так:

$ <some command>
a
b
e
k
s
4b9b3361

Ответ 1

с помощью sed?

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

Ответ 2

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

Попробуйте это.

Ответ 3

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

человек (1) разрезать

Очень удобно, ключ -d определяет разделитель и поле -f, которое вы хотите.

РЕДАКТИРОВАТЬ: Включить речной поток - это тоже кусок пирога, так как срез может начинаться и с самого конца, хотя логика несколько отличается. Вот пример с кучей файлов со случайными именами, некоторые с двумя точками, некоторые с одной точкой, а некоторые без расширения:

[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) и откладывая его, заставляет его начинать отсчет с конца.

Эта же нотация может использоваться для смещения и символов кроме полей (см. справочную страницу)