Мне неловко изо всех сил пытаться перебрать несколько файлов, выбранных один на основе нескольких критериев (определяемых регулярным выражением). Например, из файлов, перечисленных ниже, я бы хотел выбрать только файлы с расширением txt, кроме тех, которые содержат строку «cat»:
mousecatdog.txt
dogcowfox.gif
dogmousecat.txt
dogmousepig.txt
Так что я бы хотел получить только dogmousepig.txt
из этого списка.
Я пытался использовать негативные взгляды, но получаю ошибку:
syntax error near unexpected token `('
Конечно, посмотрел другие темы на форуме и попытался решить проблему, добавив скобки () или включив shopt -s extglob
, но безрезультатно.
Я использую Mac, а скрипт на bash.
#!/bin/bash
for FILE in ^((?!cat).)*.txt
do
printf "\$FILE\n"
done