find . -name '*.sh'
find all files named '*.sh' in the current directory and sub-sirectories, and print filenames to stdout
xargs perl ...
xargs reads filenames (arguments) from the standard input and executes the command 'perl' one or more times with any initial-arguments followed by arguments read from standard input.
For example, if there are two file 'start.sh' ans 'stop.sh', wargs build and executes the following command :
perl perl -p -i'_save' -e 's+rick+brick+g' start.sh stop.sh
perl -p -i'_save' -e 's+rick+brick+g'
Execute perl with the options :
-p : causes Perl to proceed input files line by line, executing the program (-e '...') for each line
-i'save_' : input files are saved with name *.sh_save, output files are named *.sh
-e 's+rick+brick+g' : specify a line of program to execute. Substitutute all occurence of 'rick' by 'brick' in the input file(s).