I am using fswatch
and only want it triggered if a file with extension .xxx
is modified/created etc. The documentation and the second reference below indicate that:
Question: What is the regular expression to use to exclude all files that do not match the .xxx
extension?
I'm fswatch
author. It may not be very intuitive, but fswatch
includes everything unless an exclusion filter says otherwise. Coming to your problem: you want to include all files with a given extension. Rephrasing in term of exclusion and inclusion filters:
ext
.That is:
To exclude everything you can add an exclusion filter matching any string: .*
.
To include files with a given extension ext
, you add an inclusion filter matching any path ending with .ext
: \\.ext$
. In this case you need to escape the dot .
to match the literal dot, then the extension ext
and then matching the end of the path with $
.
The final command is:
$ fswatch [options] -e ".*" -i "\\.ext$"
If you want case insensitive filters (e.g. to match eXt
, Ext
, etc.), just add the -I
option.
You may watch for changes to files of a single extension like this:
fswatch -e ".*" -i ".*/[^.]*\\.xxx$" .
This will exclude all files and then include all paths ending with .xxx
(and also exclude files starting with a dot).
If you want to run a command on the file change, you may add the following:
fswatch -e ".*" -i ".*/[^.]*\\.xxx$" -0 . | xargs -0 -n 1 -I {} echo "File {} changed"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With