On Mon, Jul 02, 2007 at 09:59:17PM +0100, Penguin Lover Mick squawked:
> Hi All,
>
> 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.
from 'info sed' -> Examples
#! /bin/sh
# rename files to lower/upper case...
#
# usage:
# move-to-lower *
# move-to-upper *
# or
# move-to-lower -R .
# move-to-upper -R .
#
help()
{
cat << eof
Usage: $0 [-n] [-r] [-h] files...
-n do nothing, only see what would be done
-R recursive (use find)
-h this message
files files to remap to lower case
Examples:
$0 -n * (see if everything is ok, then...)
$0 *
$0 -R .
eof
}
apply_cmd='sh'
finder='echo "$@" | tr " " "\n"'
files_only=
while :
do
case "$1" in
-n) apply_cmd='cat' ;;
-R) finder='find "$@" -type f';;
-h) help ; exit 1 ;;
*) break ;;
esac
shift
done
if [ -z "$1" ]; then
echo Usage: $0 [-h] [-n] [-r] files...
exit 1
fi
LOWER='abcdefghijklmnopqrstuvwxyz'
UPPER='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
case `basename $0` in
*upper*) TO=$UPPER; FROM=$LOWER ;;
*) FROM=$UPPER; TO=$LOWER ;;
esac
eval $finder | sed -n '
# remove all trailing slashes
s/\/*$//
# add ./ if there is no path, only a filename
/\//! s/^/.\//
# save path+filename
h
# remove path
s/.*\///
# do conversion only on filename
y/'$FROM'/'$TO'/
# now line contains original path+file, while
# hold space contains the new filename
x
# add converted file name to line, which now contains
# path/file-name\nconverted-file-name
G
# check if converted file name is equal to original file name,
# if it is, do not print nothing
/^.*\/\(.*\)\n\1/b
# now, transform path/fromfile\n, into
# mv path/fromfile path/tofile and print it
s/^\(.*\/\)\(.*\)\n\(.*\)$/mv "\1\2" "\1\3"/p
' | $apply_cmd
..... which is probably a bit of an overkill.
(And don't ask me why I remember this particular example being in the
sed info page ;p )
HTH,
W
--
"`The best way to get a drink out of a Vogon is to stick
your finger down his throat...'"
- The Book, on one of the Vogon's social inadequacies.
Sortir en Pantoufles: up 206 days, 20:29
--
[EMAIL PROTECTED] mailing list