Tuesday, July 26, 2022

[SOLVED] Grep multiple files using regex for specifying filenames to search for

Issue

Let's say I have n files with names like link123.txt, link345.txt, link645.txt, etc.

I'd like to grep a subset of these n files for a keyword. For example:

grep 'searchtext' link123.txt link 345.txt ...

I'd like to do something like

grep 'searchtext' link[123\|345].txt

How can I mention the filenames as regex in this case?


Solution

You can use the bash option extglob, which allows extended use of globbing, including | separated pattern lists.

@(123|456)

Matches one of 123 or 456 once.

shopt -s extglob
grep 'searchtext' link@(123|345).txt
shopt -u extglob


Answered By - Will Barnwell
Answer Checked By - Willingham (WPSolving Volunteer)