Sponsored Content
Top Forums Shell Programming and Scripting [Unix] a dos style rename wont work Post 302186834 by fblade1987 on Friday 18th of April 2008 08:36:14 AM
Old 04-18-2008
[Unix] a dos style rename wont work

Hey guys i'm creating a dos style rename script, so if a user types say q14.* as the 1st param and b14.* as the 2nd and will rename all q14 files to b14 but keep the extensions, so i've developed nearly the full script "i think", if i use echo(echo "if $1 had been renamed it would now be $newfile") to simulate the rename it works fine shows

Quote:
q14.1 will be renamed to b14.1
q14.2 will be renamed to b14.2
.....etc
but it becomes a whole different story if i alter that line to "mv $1 $newFile"


Code:
#!/bin/sh

case $# in
0)echo Usage: dosRename file >&2
	   ;;
*)for file
		do
				case $file in

				[A-Za-z0-9]*\.\*) type=main
					   ;;
				\*\.[A-Za-z0-9]* )type=extension
					   ;;
				esac
		#echo $type
		done

		endFile=$file

		while [ $# -ne 1  ]
		do
				case $type in
				'extension')	extension=`echo $endFile |sed -e 's/\*\./\./'`
								newfile=`echo $1 |sed -e "s/\.[A-Za-z0-9]*/$extension/"`
								echo  "if $1 had been renamed it would now be $newfile"
							 #   mv $1 $newfile
					   ;;
				'main')		 fileName=`echo $endFile | sed -e 's/\.\*//'`
								newFile=`echo $1 | sed -e "s/[A-Za-z0-9]*\.\(.*[A-Za-z0-9]*\)/$fileName\.\1/"`
								echo "if $1 had been renamed it would now be $newFile"
							#	mv $1 $newFile
					   ;;
				esac
				shift 1
		done
	   ;;

esac

it renames the 1st one fine then the rest go along the lines of

dosRename q14.* b14.*
it dose first one fine but 2nd one ends up q14.1.2 and third q14.1.2.3

any ideas what is up with my script?


edit ~ if any help if i include mv or cp the output is as followed
Quote:
if nob.1 had been renamed it would now be b14.1
if nob.1.2 had been renamed it would now be b14.1.1.2
and this is the output if i dont include them

Quote:
if nobby.1 had been renamed it would now be b14.1
if nobby.1.2 had been renamed it would now be b14.1.2

Last edited by fblade1987; 04-18-2008 at 10:33 AM..
 

9 More Discussions You Might Find Interesting

1. HP-UX

Netscape Wont work...

Cant Get Netscape to work... I get this messsage: Perhaps there is a problem with your name server? if your site must use a non-root name server, you will need to set the $SOCKS_NS environment variable to point at the appropreate name server. It may (or may not) be necessary to set this... (2 Replies)
Discussion started by: Eric_Bakken
2 Replies

2. UNIX for Dummies Questions & Answers

head command wont work on MF file

I am trying to do a head on a mainframe file and on doing ti just gives me a blank screen with nothing on it. however, when i do a tail for the same file...i get a few lines on the screen. i know tht mainframe files have all the records on one line...does this have to do something with this.... (10 Replies)
Discussion started by: alfredo123
10 Replies

3. Shell Programming and Scripting

My Wireless Script Wont Work.....anyone??

ive been trying to write a simple (at least i thought it was) script to launch my wireless usb under ubuntu with kde. im using nano. when i run it from a terminal it works fine, but it just wont run from the script. there is a caveat, but first heres the script. ... (7 Replies)
Discussion started by: braze
7 Replies

4. Windows & DOS: Issues & Discussions

DOS script to grab the first file in a dir and rename it

:confused: Hello, Is there any way to use the dir command / some DOS Script to select only first file of similar pattern of files in a direcotory and rename it for example, one directory has 5 files abc_1005.txt abc_5256.txt abc_2001.txt abc_2003.txt abc_3006.txt by use script I would... (2 Replies)
Discussion started by: raghav525
2 Replies

5. OS X (Apple)

AjaxTerm wont work on Mac OS X

just downloaded Ajaxterm-0.10 on my Mac 10.5.8 and after a ./ajaxterm.py i get: AjaxTerm at http://localhost:8022/ which looks ok but as soon i go to the website: ./ajaxterm.py:418: DeprecationWarning: 'I' format requires 0 <= number <= 4294967295 fcntl.ioctl(fd,... (0 Replies)
Discussion started by: berot3
0 Replies

6. Shell Programming and Scripting

2 commands in script wont work together

For some reason when I run these separately they work but when they are in a script file the second wont: printf "%s\n" "$RANDOM"."$RANDOM" "$RANDOM"."$RANDOM" "$RANDOM"."$RANDOM" "$RANDOM"."$RANDOM" | tee $HOME/bpl/random RANDOM1=$( <$HOME/bpl/random ) Anyone know why? (8 Replies)
Discussion started by: pkohn11
8 Replies

7. Solaris

Creating script - grep wont work?

This is my first script and I wont get it working.. sorry for being a total noob but here it is: #./bin/sh -x echo "1:st argument = $1"; echo "2:nd argument = $2"; grep "$1" "$2" In the terminal I write, for example, su.sh sausage sausage.txt Also tried su.sh "sausage" "sausage.txt" but... (2 Replies)
Discussion started by: Prantare
2 Replies

8. Solaris

ALOM wont work when KVM connected to Sun Fire V440 server

Hi, I was asked to connect a KVM screen to a Sun Fire V440 last night so I connected it up but no joy and nothing on the KVM screen. I was told that a reboot may fix the problem so connected to the ALOM and rebooted. On the plus side, the KVM screen now works but I lost the ALOM connection. ... (0 Replies)
Discussion started by: jimmy54321
0 Replies

9. UNIX for Dummies Questions & Answers

Aliases wont work after set command

Hi, I have setup my .profile with some helpful aliases and some set commands in it. I have it as: alias gr='autorep -G' alias c='clear' alias x='exit' alias wcl='wc -l' alias l1='ls -1 "$@"' alias ll='ls -l "$@"' alias la='ls -altr "$@"' alias l='ls -ltr "$@"' alias ml='m_ls -ltr... (5 Replies)
Discussion started by: grep_me
5 Replies
LVRENAME(8)						      System Manager's Manual						       LVRENAME(8)

NAME
lvrename - rename a logical volume SYNOPSIS
lvrename [-A|--autobackup {y|n}] [-d|--debug] [-h|--help] [-t|--test] [-v|--verbose] [--version] [-f|--force] [--noudevsync] {OldLogi- calVolume{Name|Path} NewLogicalVolume{Name|Path} | VolumeGroupName OldLogicalVolumeName NewLogicalVolumeName } DESCRIPTION
lvrename renames an existing logical volume from OldLogicalVolume{Name|Path} to NewLogicalVolume{Name|Path}. OPTIONS
See lvm(8) for common options. --noudevsync Disable udev synchronisation. The process will not wait for notification from udev. It will continue irrespective of any possible udev processing in the background. You should only use this if udev is not running or has rules that ignore the devices LVM2 cre- ates. EXAMPLE
To rename lvold in volume group vg02 to lvnew: lvrename /dev/vg02/lvold vg02/lvnew An alternate syntax to rename this logical volume is: lvrename vg02 lvold lvnew SEE ALSO
lvm(8), lvchange(8), vgcreate(8), vgrename(8) Sistina Software UK LVM TOOLS 2.02.95(2) (2012-03-06) LVRENAME(8)
All times are GMT -4. The time now is 09:07 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy