rx
Regexp pattern matching for file system objects (eg
.*\\.txt
)
Returns a list of files and directories that match a regexp pattern.
Output is a JSON list.
rx: pattern -> <stdout>
!rx: pattern -> <stdout>
<stdin> -> rx: pattern -> <stdout>
<stdin> -> !rx: pattern -> <stdout>
Inline regex file matching:
cat: @{ rx: '.*\.txt' }
Writing a list of files to disk:
rx: '.*\.go' |> filelist.txt
Checking if files exist:
if { rx: somefiles.* } then {
# files exist
}
Checking if files do not exist:
!if { rx: somefiles.* } then {
# files do not exist
}
Return all files apart from text files:
!g: '\.txt$'
Filtering a file list based on regexp matches file:
f: +f -> rx: '.*\.txt'
Remove any regexp file matches from a file list:
f: +f -> !rx: '.*\.txt'
Unlike globbing (g
) which can traverse directories (eg g: /path/*
), rx
is only designed to match file system objects in the current working directory.
rx
uses Go (lang)’s standard regexp engine.
If you want to exclude any matches based on wildcards, rather than include them, then you can use the bang prefix. eg
» rx: READ*
[
"README.html"
]
murex-dev» !rx: .*
Error in `!rx` (1,1): No data returned.
!rx
first looks for files that match its pattern, then it reads the file list from STDIN. If STDIN contains contents that are not files then !rx
might not handle those list items correctly. This shouldn’t be an issue with rx
in its normal mode because it is only looking for matches however when used as !rx
any items that are not files will leak through.
This is its designed feature and not a bug. If you wish to remove anything that also isn’t a file then you should first pipe into either g: *
, rx: .*
, or f +f
and then pipe that into !rx
.
The reason for this behavior is to separate this from !regexp
and !match
.
rx
!rx
f
: Lists or filters file system objects (eg files)g
: Glob pattern matching for file system objects (eg *.txt
)match
: Match an exact value in an arrayregexp
: Regexp tools for arrays / lists of stringsThis site's content is rebuilt automatically from murex's source code after each merge to the master
branch. Downloadable murex binaries are also built with the website.
Last built on Mon Feb 13 09:18:06 UTC 2023 against commit f339958f33995895c1d997efcdbb8408d2c8d45f8b5f934.
Current version is which has been verified against 13950 tests cases.