Используя ls, как перечислять файлы без печати расширения (часть после точки)?
Предположим, что у меня есть каталог с некоторыми файлами:
$ ls
a.c b.c e.c k.cpp s.java
Как я могу отобразить результат без расширения файла (часть, следующая за точкой, включая эту точку)? Вот так:
$ <some command>
a
b
e
k
s
Ответ 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, которое вы хотите.
РЕДАКТИРОВАТЬ: Включить речной поток - это тоже кусок пирога, так как срез может начинаться и с самого конца, хотя логика несколько отличается. Вот пример с кучей файлов со случайными именами, некоторые с двумя точками, некоторые с одной точкой, а некоторые без расширения:
Используя минус перед номером поля, он устраняет все НО, но указанные поля (в этом случае 1,2) и откладывая его, заставляет его начинать отсчет с конца.
Эта же нотация может использоваться для смещения и символов кроме полей (см. справочную страницу)