Получите имя файла перед расширением

У меня есть некоторые файлы в том же каталоге (в файловой системе UNIX), который похож:

a.txt.name
b.xml.name
c.properties.name

a.txt.name2
b.xml.name2
c.properties.name2

Как я получаю строку перед name или name2 часть с помощью некоторой команды оболочки?

т.е. a.txt, b.xml, c.properties часть?

7
задан ryanprayogo 4 May 2010 в 16:38
поделиться

4 ответа

$ basename a.txt.name .name
a.txt
9
ответ дан 6 December 2019 в 12:47
поделиться
$ file="a.txt.name"
$ file="${file%.*}"
$ echo "$file"
a.txt
4
ответ дан 6 December 2019 в 12:47
поделиться

Если соглашение об именовании всегда foo.bar.other , то это достаточно просто:

ls * | cut -d. -f1,2
2
ответ дан 6 December 2019 в 12:47
поделиться

Обратите внимание на функции обработки строк в bash. Эта страница должна помочь вам в большинстве случаев:

http://tldp.org/LDP/abs/html/string-manipulation.html

1
ответ дан 6 December 2019 в 12:47
поделиться