find $adr_dir -maxdepth 1 -type f -exec basename {} \; | grep -E '^[0-9]*[1-9][0-9]*-[^/]*\.md$' | sort | sed -e "s?^?$adr_dir/?"
Explanation:
-maxdepth 1 exclude subfolders; this is faster if you have subfolders with a lot of files, for instance images linked by your ADRs
-type f files only
-exec basename {} \; remove adr_dir from the output so we can use single quote for grep expression avoiding complicated escape sequences due to both regex and shell double quoting. Also note that to be safe adr_dir itself should be escaped at runtime in the original code.
[0-9]*[1-9][0-9]* any sequence of digits other than all zeros (0 is not a valid adr; for instance adr new starts from 1)
\.md$ make sure the extension is exactly .md (for instance .md5 files are excluded)
sed -e "s?^?$adr_dir/?" put adr_dir back to the output
This fix makes
adr list
andadr link
work properly when there are extraneous files along with adr files.I just changed
to
Explanation:
-maxdepth 1
exclude subfolders; this is faster if you have subfolders with a lot of files, for instance images linked by your ADRs-type f
files only-exec basename {} \;
remove adr_dir from the output so we can use single quote for grep expression avoiding complicated escape sequences due to both regex and shell double quoting. Also note that to be safe adr_dir itself should be escaped at runtime in the original code.[0-9]*[1-9][0-9]*
any sequence of digits other than all zeros (0 is not a valid adr; for instanceadr new
starts from 1)\.md$
make sure the extension is exactly.md
(for instance.md5
files are excluded)sed -e "s?^?$adr_dir/?"
put adr_dir back to the output