Mich writes:

> I backed up my wife's WinXP fs using K3B and I used default settings
> which unfortunately converted all file names to CAPITALS and shortened
> them to 8 characters maximum, just like DOS would do.  Is there a clever
> way to change some of them back to lower case (in batches within given
> directorates) so that she doesn't have to do it manually one by one?  I
> do not want to change the access times, only the filename case letters.

Create a script like this, name it lowercase.sh or something, and call it 
with "lowercase file1 file2 dir1 dir2". I takes a list of files as 
arguments (use * for all), and also works for directories. 
So, "lowercase ." should convert all files and directories to lowercase.

Put the script into your $PATH, or precede it by its path, e.g. ./lowercase. 
To test it before possible messing up (I just wrote this quickly) use 
the -t option: lowercase -t /path/to/your/files


#!/bin/bash

# parse options (-t only)
while getopts "t" opt
do
        case $opt in
        t )
                test=true
                ;;
        * )
                exit 1
        esac
done

shift $(( OPTIND-1 ))

# loop over arguments
while (( $# ))
do
        file=$1
        if [[ -d $file ]]
        then
                # call myself
                $0 ${test:+-t} "$file"/*
        elif [[ -f $file ]]
        then
                # conversion to lowercase
                  dir=$( dirname  "$file" )
                 base=$( basename "$file" )
                lower=$( echo "$base" | tr '[:upper:]' '[:lower:]' )
                newfile=${dir:+$dir/}$lower
                [[ $file -ef $newfile ]] ||
                        ${test:+echo} mv -v "$file" "$newfile"
        else
                echo "File not found: '$1'"
        fi
        shift
done


        Alex
-- 
[EMAIL PROTECTED] mailing list

Reply via email to