пишу один скрипт, так там требуется у файла порезать расширение:
в переменной что-то типа lalala.1.2.tar.gz - надо избавиться от .tar.gz, а 1.2 чтоб осталось.
порезать расширения (shell программирование)
Модератор: Модераторы разделов
-
polachok
- Бывший модератор
- Сообщения: 2199
- Статус: главный форумный маргинал
- ОС: gnu/linux
порезать расширения
И немедленно выпил.
-
Alagert
- Сообщения: 167
Re: порезать расширения
Недавно столкнулся с такой же проблемой, долго бился и случайно нашел решение в каком то номере linux gazet. А решение такое:
В переменной temp будет лежать first.
Вроде так.
Код: Выделить всё
file="first.cpp"
temp=${first%%.*}В переменной temp будет лежать first.
Вроде так.
Born to be ROOT
-
JaGoTerr
- Сообщения: 380
Re: порезать расширения
Если известен формат имени файла (например имя-<старшая_версия>.<младшая_версия>.tar.gz)
Как вариант:
FILE_NAME=file-1.2.tar.gz
echo "FILENAME" | cut -d '.' -f 0-2
Как вариант:
FILE_NAME=file-1.2.tar.gz
echo "FILENAME" | cut -d '.' -f 0-2
-
flook
- Сообщения: 585
- Статус: Просто flook
Re: порезать расширения
Если все файл вида .tar.gz, то
иначе - ИМХО никак. Или?
Код: Выделить всё
echo $file | sed -e 's/.tar.gz//'иначе - ИМХО никак. Или?
В каждом из нас спит гений... и с каждым днем все крепче...
-
Bolverk
- Бывший модератор
- Сообщения: 1571
- ОС: Cygwin
Re: порезать расширения
Попробуй.
Это если известно сколько символов расширение.
Или просто ${FILENAME/%.tar.gz/}.
Это bash.
Код: Выделить всё
LONGNAME="lalala.1.2.tar.gz"
NAMELENGHT=${#LONGNAME}
SHORTNAME=${LONGNAME:0:$NAMELENGHT-7}Это если известно сколько символов расширение.
Или просто ${FILENAME/%.tar.gz/}.
Это bash.
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: порезать расширения
(flook @ Четверг, 02 Июня 2005, 16:12) писал(а):Если все файл вида .tar.gz, то
Код: Выделить всё
echo $file | sed -e 's/.tar.gz//'
иначе - ИМХО никак. Или?
можно и так, а точне sed -e 's/.tar.gz$//'
но я всегда использую ${file%.*}
ArchLinux / IceWM
-
polachok
- Бывший модератор
- Сообщения: 2199
- Статус: главный форумный маргинал
- ОС: gnu/linux