I'm new with Linux, sed, and awk but I don't mind challenging myself on new ideas. That being said, I understand the purpose and how to use rename and sed for a common event such as adding a $date or removing a _1234 from all the files. However, I want to figure out how to rename 100's of files that have no relation to one another other than the file type.

Renaming example:

old name alpha.ai renamed to omega.ai

old name pie32.ai renamed to apple.ai

old name xmas.ai renamed to santa.ai

I originally used a bash script to pull all the names to a .csv file and placed them in column A. In column B I wrote in the new names. Now since there is not a common event occurring how could you write sed or the like to do this??

which will be fed to bash to execute. The quotes around filenames are not mandatory, they just guard any possible spaces in the filenames (however they will defintely not help against spaces followed by a comma, since that is used as delimiter). the -v instructs mv to display what it is doing (in case something goes wrong, you'll know what happened), -i will cause it to ask if it were to overwrite already existing file.

There are several quoting problems in your script. It will mangle file names containing special characters: whitespace, \[?*-.

**Always use double quotes around variable substitutions "$i" and command substitutions "$(sed …)". Without double quotes, the value of the variable is interpreted as a list of whitespace-separated wildcard patterns, and each pattern is replaced by the list of matching file names (if there are no matches, the pattern is left alone).

Also, if a file name begins with -, it will be interpreted as an option by mv and possibly by echo. Pass -- first to tell the command that there will be no more options.