On Wed, Apr 11, 2012 at 02:51:04PM -0600, Eric Blake wrote:
On 04/11/2012 02:44 PM, address@hidden wrote:
I have many files, 2.5 million, that I have to make available to Windows
folks
They demand that the files have a extension added
Is there an efficient method of bulk renaming files
If you're wanting to use just bash features:
for f in $(generate your list of files); do
mv "$f" "$f.ext"
done
If you want efficient, there's several purpose-built tools for this job,
but it is no longer a question for the bash list. My favorite:
man mmv
for f in $(thing that generates filesnames) is a very bad idea. You'll
get hit by word splitting or globbing of filenames that have spaces or
glob characters in their names.
Is it safe to assume that these files exist in some sort of multi-level
hierarchy, rather than a single directory? If so, you want to use find.
find . -type f ! -name '*.*' \
-exec sh -c 'for f; do mv "$f" "$f.txt"; done' _ {} +
(assuming you wanted to add .txt)