Как я могу получить терминал в OSX распознавать Regex как имена файлов? - PullRequest
0 голосов
/ 22 марта 2019

В терминале OS X у меня есть следующее:

for filename in ^.* 2\.jpeg$; do printf "$filename\n"; done;

которым я хочу сопоставить имена файлов в текущей папке, оканчивающиеся строкой «2.jpeg»

но он не распознается как Regex и не ищет текущий каталог. Он просто печатает две строки:

^.* 2\.jpeg$

очевидно, есть еще что-то, что я хочу сделать с этими файлами, но я не могу заставить их соответствовать. Ввод регулярного выражения в кавычки тоже не помогает.

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

Вам необходимо использовать шаблон glob, регулярное выражение не работает в конструкции for ... in .... И не печатайте такие переменные, используйте echo или printf '%s\n' "$variable".

for filename in ./*' '2.jpeg; do
    echo "$filename"
done
0 голосов
/ 22 марта 2019

Вы можете сделать следующее:

for filename in *2.jpeg; do echo ${filename}; done

Это дает мне следующее:

for filename in *2.jpeg; do echo ${filename}; done
2.jpeg
a2.jpeg

В каталоге с 3 файлами:

touch 1.jpeg
touch a2.jpeg
touch 2.jpeg
...