В списке файлов:Как запустить регулярное выражение для имени файла?
javascript-custom-rules-plugin-1.0-SNAPSHOT.jar
README.txt
sonar-build-breaker-plugin-2.0.jar
sonar-javascript-plugin-2.11.jar
tmo-custom-rules-1.0.jar
Я пытаюсь соответствовать этим имена файлов с помощью регулярных выражений.
My Script
#!/usr/bin/env bash
install_location=/usr/local/sonar/extensions/plugins
for f in $(ls -1 $install_location)
do
# remove any previous versions of this plugin
if [[ "$f" =~ ".*tmo-custom-rules-(.+)\.jar" ]]
then
echo "found $f. will remove"
else
echo "$f doesn't match"
fi
done
Я попытался if [[ "$f" =~ ".*tmo-custom-rules-(.+)\.jar" ]]
и if [[ "$f" == *"tmo-custom-rules" ]]
безрезультатно.
Я получаю
javascript-custom-rules-plugin-1.0-SNAPSHOT.jar doesn't match
README.txt doesn't match
sonar-build-breaker-plugin-2.0.jar doesn't match
sonar-javascript-plugin-2.11.jar doesn't match
tmo-custom-rules-1.0.jar doesn't match
, когда я ожидал found tmo-custom-rules-1.0.jar. will remove
Я бегу мое регулярное выражение через множество регулярных выражений тестировщиков с приведенными выше данными, и все они возвращают правильные матчи, но я не может заставить его работать здесь в моем скрипте.
Как я могу пройти цикл и проверить, соответствуют ли какие-либо файлы этому регулярному выражению?
работает отлично. Я оставил свой оператор 'for' в одиночку и не кавычками' $ f'. glob соответствия работает так, как я хотел. благодаря! +1 для решения регулярного выражения, а также для моего вопроса. я буду использовать сопоставление glob. – sircapsalot
Это не регулярное выражение, а шаблон оболочки. Возможно, это то, чего действительно хочет оригинальный плакат? –
отредактировал мой комментарий, @RobDavis, спасибо. anubhava также предоставил решение для регулярного выражения, но просто предложил альтернативу. в любом случае - они оба работают – sircapsalot