Делаю скрипт для сортировки фотографий по некоторому условию.
Даны файлы типа file.01.my_birthday.jpg и т.п. Нужно получить имя файла без расширения, т.е. file.01.my_birthday
Если использовать basename, то можно сделать, например, так:
file=$(basename file.01.my_birthday.jpg .jpg)
Недостаток в том, что нужно указывать конкретное расширение. А оно может быть разным, не только jpg, но и NEF, dng и др.
Можно использовать awk. Трудность в том, что в файле может быть несколько разделителей (точек). Если бы точка была только одна, т.е. та, что отделяет расширение, то можно было бы сделать, например, так:
file=$(echo DSC_0001.NEF | awk -F "." '{print $1}')
Есть еще у awk опция $NF, которая выводит количество полей. Можно подумать, как ее задействовать. Но, возможно, есть и более простое решение? Мне кажется, это должно быть востребовано.