Hey Jon,
No one has purpose built a tool to my knowledge. What operating system are you on? Many linux distros have or even ship with a rename command thats quite nice, takes perl regular expressions. Here I ran it on ds001 in bids-examples with '-n' to not make any changes but print what it would do:
~/projects/bids-examples/ds001 $ find . -exec rename -n -e 's/sub-16/sub-2222/g' {} \;
rename(./sub-16, ./sub-2222)
rename(./sub-16/func, ./sub-2222/func)
rename(./sub-16/func/sub-16_task-balloonanalogrisktask_run-01_events.tsv, ./sub-2222/func/sub-2222_task-balloonanalogrisktask_run-01_events.tsv)
rename(./sub-16/func/sub-16_task-balloonanalogrisktask_run-03_events.tsv, ./sub-2222/func/sub-2222_task-balloonanalogrisktask_run-03_events.tsv)
rename(./sub-16/func/sub-16_task-balloonanalogrisktask_run-02_events.tsv, ./sub-2222/func/sub-2222_task-balloonanalogrisktask_run-02_events.tsv)
rename(./sub-16/func/sub-16_task-balloonanalogrisktask_run-01_bold.nii.gz, ./sub-2222/func/sub-2222_task-balloonanalogrisktask_run-01_bold.nii.gz)
rename(./sub-16/func/sub-16_task-balloonanalogrisktask_run-03_bold.nii.gz, ./sub-2222/func/sub-2222_task-balloonanalogrisktask_run-03_bold.nii.gz)
rename(./sub-16/func/sub-16_task-balloonanalogrisktask_run-02_bold.nii.gz, ./sub-2222/func/sub-2222_task-balloonanalogrisktask_run-02_bold.nii.gz)
rename(./sub-16/anat, ./sub-2222/anat)
rename(./sub-16/anat/sub-16_T1w.nii.gz, ./sub-2222/anat/sub-2222_T1w.nii.gz)
rename(./sub-16/anat/sub-16_inplaneT2.nii.gz, ./sub-2222/anat/sub-2222_inplaneT2.nii.gz)
One caveat is that theres an older utility also called rename that didn't used perl shipped by the linux kernel team. Need to check the man page for rename on your system to confirm which version is installed. Not sure what the state of rename on macs is.
Then to fix subject names in files we'd need to run a find exec with sed, I can come up with an example for that too if its an approach you might be interested in.
- Ross