Любой GNU автоинструменты (как упомянуто в комментарии), или также CMake является опцией.
Автоинструменты GNU являются более традиционным подходом, но (и возможно разговор только за меня) я не думаю, что люди действительно слишком взволнованы перспективой начальной установки проекта с помощью них. Ну, это - кривая обучения в любом случае. CMake является более новым ребенком на блоке, и возможно менее распространенный (и все еще имеет кривую обучения). Это имеет свой собственный синтаксис, и это генерирует make-файлы для Вашей платформы. CMake делает имеет явное преимущество того, чтобы быть не так un*x-centric; это работает надежно над Unix, окнами и Mac также (например, это может генерировать msvc проекты, например, вместо make-файлов.)
Править: и конечно так как 'make-файлы' были предложены, этот ответ соглашается с тем предположением. Но возможно просто сценарий Python или (удушье) простая программа Java более подходили бы для этой задачи; сценарии/язык программирования сделали бы это то же через платформы.
Используйте regex привязку конца ($
), например:
echo "$file" | grep '\.xml$'
Для нахождения всех файлов, заканчивающихся "xml", я предложил бы использовать find
команда, например:
find . -name '*.xml'
Рекурсивно перечислил бы все XML-файлы из текущего каталога.
Если я понимаю правильно, Вы хотите обнаружить, заканчивается ли имя файла в .xml
.
case $file in
*.xml) echo "$file";;
esac
Если Вы хотите сделать что-то, когда имя файла не соответствует:
case $file in
*.xml) echo "matched $file";;
*) echo "skipping $file";;
esac
Если бы у Вас уже есть имя файла в переменной, хороший подход был бы расширением параметра
$ echo $file
text.xmllsls
$ echo ${file%.xml*}.xml
text.xml
Где %.xml*
это последнее вхождение .xml
и все позади него будет удалено. Для этого я также повторил .xml снова.
Или, чтобы иметь тест также
$ file=test.xmlslsls
$ file2=${file%.xml*}.xml
$ if [ $file = $file2 ]; then echo $file; fi
$
$
$ file="test.xml"
$ file2=${file%.xml*}.xml
$ if [ $file = $file2 ]; then echo $file; fi
test.xml
Или, на одной строке
$ if [ $file = ${file%.xml*}.xml ]; then echo $file; fi
самый простой способ ...
echo file=machine_configuration.xml | cut -d '.' -f 1