My question is so simple, but I could not find any solution yet.
I need to find files with the date (string) repeated in their names. For example:
20190101_fl_20190101.nc
20190101_fl_20190104.nc
20190102_fl_20190102.nc
20190102_fl_20190104.nc
I need to find 20190101_fl_20190101.nc and 20190102_fl_20190102.nc.
I have tried
ls 20190[0-9][0-9][0-9]_fl_20190[0-9][0-9][0-9].nc
But, as expected, it finds all possible combinations.
Any help would be highly appreciated.
>Solution :
You can use
find . -type f -regextype posix-extended -regex '.*/(20190[0-9]{3})_fl_\1\.nc$'
The regex matches
.*/– any chars up to the rightmost/(necessary because the pattern used withfindrequires a full string match)(20190[0-9]{3})– Group 1:2019and any three digits_fl_– a fixed substring\1– backreference to Group 1 value\.nc–.ncstring$– end of input.
The -regextype posix-extended option is necessary since the pattern above is POSIX ERE compliant.