# Rewrite the targets of symlinks with Perl
$ relink rewrite 's/foo/bar/' PATH(s)
# Convert between absolute and relative targets
$ relink abs2rel PATH(s)
$ relink rel2abs PATH(s)
# List links [only certain symlinks]
$ relink list [-t '/foo/'] PATH(s)
####
~/Documents$ find . ! -type d -printf '%y %p\t%l\n'
f ./Reports Oct 2016/Report Weeks 40-42.xls
f ./Reports Oct 2016/Report Weeks 43-46.xls
l ./Reports Nov 2016/Report Weeks 43-46.xls /home/foobar/Documents/Reports Oct 2016/Report Weeks 43-46.xls
f ./Reports Nov 2016/Report Weeks 47-51.xls
l ./Reports Dec 2016/Report Weeks 47-51.xls /home/foobar/Documents/Reports Nov 2016/Report Weeks 47-51.xls
####
~/Documents$ mkdir 'Reports 2016'
~/Documents$ for M in Oct Nov Dec; do \
mv -v "Reports $M 2016" "Reports 2016/$M"; done
‘Reports Oct 2016’ -> ‘Reports 2016/Oct’
‘Reports Nov 2016’ -> ‘Reports 2016/Nov’
‘Reports Dec 2016’ -> ‘Reports 2016/Dec’
~/Documents$ find . ! -type d -printf '%y %p\t%l\n'
f ./Reports 2016/Oct/Report Weeks 40-42.xls
f ./Reports 2016/Oct/Report Weeks 43-46.xls
l ./Reports 2016/Nov/Report Weeks 43-46.xls /home/foobar/Documents/Reports Oct 2016/Report Weeks 43-46.xls
f ./Reports 2016/Nov/Report Weeks 47-51.xls
l ./Reports 2016/Dec/Report Weeks 47-51.xls /home/foobar/Documents/Reports Nov 2016/Report Weeks 47-51.xls
####
~/Documents$ relink rewrite 's{/Reports (\w+) 2016/}{/Reports 2016/$1/}'
~/Documents$ find . ! -type d -printf '%y %p\t%l\n'
f ./Reports 2016/Oct/Report Weeks 40-42.xls
f ./Reports 2016/Oct/Report Weeks 43-46.xls
l ./Reports 2016/Nov/Report Weeks 43-46.xls /home/foobar/Documents/Reports 2016/Oct/Report Weeks 43-46.xls
f ./Reports 2016/Nov/Report Weeks 47-51.xls
l ./Reports 2016/Dec/Report Weeks 47-51.xls /home/foobar/Documents/Reports 2016/Nov/Report Weeks 47-51.xls
####
~/Documents$ relink abs2rel
~/Documents$ find . ! -type d -printf '%y %p\t%l\n'
f ./Reports 2016/Oct/Report Weeks 40-42.xls
f ./Reports 2016/Oct/Report Weeks 43-46.xls
l ./Reports 2016/Nov/Report Weeks 43-46.xls ../Oct/Report Weeks 43-46.xls
f ./Reports 2016/Nov/Report Weeks 47-51.xls
l ./Reports 2016/Dec/Report Weeks 47-51.xls ../Nov/Report Weeks 47-51.xls
####
~$ relink list -t '$FULL=~/^$PATHS/' -- ~/Documents
/home/foobar/Documents/Reports 2016/Nov/Report Weeks 43-46.xls -> ../Oct/Report Weeks 43-46.xls
/home/foobar/Documents/Reports 2016/Dec/Report Weeks 47-51.xls -> ../Nov/Report Weeks 47-51.xls
####
~/Documents$ relink list
./Reports 2016/Nov/Report Weeks 43-46.xls -> ../Oct/Report Weeks 43-46.xls
./Reports 2016/Dec/Report Weeks 47-51.xls -> ../Nov/Report Weeks 47-51.xls
####
~$ relink list -l `which x-www-browser`
/usr/bin/x-www-browser -> /etc/alternatives/x-www-browser -> /usr/bin/firefox -> /usr/lib/firefox/firefox.sh