paste <(ls) <(ls | tr A-Z a-z) | while read OLD NEW; do echo mv -v $OLD $NEW; done
<(cmd) is the filename of a named pipe (FIFO), where the named pipe is filled by the output of cmdpaste puts together the named pipes to form two columns: first column with the original filenames, second column with the lowercased filenames... | tr abc ABC transforms stdin by replacing any characters that appear in the first set of letters to the second set of letterswhile read old new; do ...; done for each line it reads the first column into $old and the second column into $newfor name in *; do mv "$name" "${name,,}"; done