These articles have answered my question None of them really works for me I think it's because the string i'm trying to replace has a Tell me the best way to handle this?
I have an image file that was replaced by u00a9 during a site migration They're like this
Lucky-#U00a9NBC-80x60.jpg Lucky-#U00a9NBC-125x125.jpg Lucky-#U00a9NBC-150x150.jpg Lucky-#U00a9NBC-250x250.jpg Lucky-#U00a9NBC-282x232.jpg Lucky-#U00a9NBC-300x150.jpg Lucky-#U00a9NBC-300x200.jpg Lucky-#U00a9NBC-300x250.jpg Lucky-#U00a9NBC-360x240.jpg Lucky-#U00a9NBC-400x250.jpg Lucky-#U00a9NBC-430x270.jpg Lucky-#U00a9NBC-480x240.jpg Lucky-#U00a9NBC-600x240.jpg Lucky-#U00a9NBC-600x250.jpg Lucky-#U00a9NBC.jpg
and I want to change it to something like this.
Lucky-safeNBC-80x60.jpg Lucky-safeNBC-125x125.jpg Lucky-safeNBC-150x150.jpg Lucky-safeNBC-250x250.jpg Lucky-safeNBC-282x232.jpg Lucky-safeNBC-300x150.jpg Lucky-safeNBC-300x200.jpg Lucky-safeNBC-300x250.jpg Lucky-safeNBC-360x240.jpg Lucky-safeNBC-400x250.jpg Lucky-safeNBC-430x270.jpg Lucky-safeNBC-480x240.jpg Lucky-safeNBC-600x240.jpg Lucky-safeNBC-600x250.jpg Lucky-safeNBC.jpg
These examples all start with "lu00a9ucky but here are many images with different names. I'm just looking at the u00a9 part of the string i'm replacing with safe
somethingelse for filenames in the current directory (not recursive) you can use the GNU rename utility.
rename 's/#/somethingelse/' *
- must be escaped with a
For your case, you would want to use
rename 's/#U00a9/safe/g' *
Note that if you only want to operate on a certain selection of files, e.g., only
*.jpg , adjust the final input to match that selection.
rename 's/#U00a9/safe/g' *.jpg
To perform a test before actually changing filenames, use the
demo/> ls Lucky-#U00a9NBC-125x125.jpg Lucky-#U00a9NBC-150x150.jpg demo/> rename -n 's/#U00a9/safe/g' *.jpg rename(Lucky-#U00a9NBC-125x125.jpg, Lucky-safeNBC-125x125.jpg) rename(Lucky-#U00a9NBC-150x150.jpg, Lucky-safeNBC-150x150.jpg)
For OS X, GNU rename can be installed using homebrew :
brew install rename .