# 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