> -------- Original Message --------
> Subject: About Bash Script
> Date: Mon, 15 Feb 2010 10:39:25 -0600
> From: Curt <[email protected]>
> To: [email protected]
> Hi Mart-
>
> I saw you were helping another guy with a bash script....hopefully you'll
> remember but i'm trying to modify it for my use.
[...]
> What I want to do is simply if the destination file exists, instead it
> creates an index number and appends that to the name.
>
> If b.txt exists then a.txt will be renamed to b.txt.1, but if b.txt.1 exists
> then it will be renamed to b.txt.2
>
> I know I can do it with the script above but i'm a little lost on what I
> should be focusing on. This is my first time trying to modify a bash script,
> any help would be appreciative.
Hello Curt,
well I took a little time and tried to write something for you.
I also send this to the newsgroup, as it's generally a better place to
ask for help, than send me mail in private.
My old code didn't fit your requirements imho, so i wrote some new.
You didn't tell what you use to create the file curl, wget,...?
#!/bin/bash
set -f
set -C
shopt -s extglob
max_check=10
# list of files is in /tmp/list/ (as example)
for file in $(find /tmp/list -type f); do
# echo "$file"
file="/tmp/out/${file##*/}" # output dir is /tmp/out/ (as example)
i=0
ext=
# start at max check - iterate backwards
# -> file found start new index
for ((x=max_check; x>=0; --x)); do
if [[ -e ${file}.${x} ]]; then
i=$x
ext=.$((i++))
break
fi
done
(
until command exec 3> "$file$ext"; do
ext=.$((i++))
done
# replace 'echo' with command of your choice
exec echo "$file$ext" >&3
) 2>/dev/null # you might not want to eleminate stderr
done
Best regards
Mart