Crash Course crowfly.net << >> Introduction GNU_Tools Example1 Example2 Execution_bit Bang_bin_bash Example3 The_dot Example4 Example5 Example6 Example7 Example8 Background Forking Example9 Bash_profile Pattern_match Regex Debug Gory_details References << >> | Bash shell supports these crazy pattern matching syntaxes: Assume variable mojo is set as follows: mojo="/home/dlink/i.am.mojo.jojo" Then these statements give the value on the left: ${mojo##/*/} i.am.mojo.jojo ${mojo#/*/} dlink/i.am.mojo.jojo ${mojo} /home/dlink/i.am.mojo.jojo ${mojo%.*} /home/dlink/i.am.mojo ${mojo%%.*} /home/dlink/i Here's how you would use this: Say, you want to rename all *.JPG files to *.jpg files: dlink@viddev1> for f in *.JPG; do g=${f%%.*}; mv -v $f $g.jpg; done `DSC_0709.JPG' -> `DSC_0709.jpg' `DSC_07250001.JPG' -> `DSC_07250001.jpg' `DSC_07430001.JPG' -> `DSC_07430001.jpg' `DSC_076700011.JPG' -> `DSC_076700011.jpg' `HudsonRiver03.JPG' -> `HudsonRiver03.jpg' `HudsonRiver08.JPG' -> `HudsonRiver08.jpg' `HudsonRiver18.JPG' -> `HudsonRiver18.jpg' `HudsonRiver26.JPG' -> `HudsonRiver26.jpg' It is better to use regular expressions whenever possible. See next slide ... |