how to find files and replace them in a directory in Shell scripting

I have a directory /java/unix/data
In data directory i have so many files from which i want to find some files who look alike below.(there are number of such below such files as well different files too in the data directory)
-68395#svg.xml
-56789#ghi.xml
-67894#gjk.org
-56734#gil.txt
I need to find all the such files having above file names as mentioned above and want to replace or cut them.
Expected Output:
I mean i want the files to renamed and processed in the same directory as below:
/java/unix/data
svg.xml
ghi.xml
ghk.org
gil.txt
I mean to say anything which can cut them on the the basis of (#)

ls | perl -e 'while(<>){chomp;$x=$_;$y=$x;($x=~/#/) && $x=~s/.+?#//;rename $y, $x}'

It seems to be very complicated for me.
Is it possible to do using simple unix/linux commands.

You could do something like:

for fname in *.xml *.org *.txt
do
   nname=$(echo "${fname}" | sed 's/^[^#]*#//')
#   mv "${fname}" "${nname}"
   echo "${fname}" "${nname}"
done

In the directory there are hundreds of files having several extensions.
i wwant a result which finds all the files which starts with "-" or contains '#'
and then rename it

---------- Post updated at 10:28 PM ---------- Previous update was at 10:26 PM ----------

Will this work?
New_FILE=(`find ${DIRECTORY} -iname "*.*" -print0 | xargs -0 grep "-"`)
will this command will give me all the desired files.

Use *#* as the filename for the for loop.

man ksh ("Linux") (see File Name Generation).

"*." is a DOS thing. Why not search for the files you want anyway instead of "all files". "-*#" would be any name starting with - and including # in it.

Cramming everything into backticks won't do what you want. It'll just give you a big list but not do anything to the files. It'll also include directories, not just files. I don't know why you used xargs to grep.

It'd be nice to know what your shell is. Assuming you have bash or ksh.

find /path/to/dir -type f -name '-*#*' | while read LINE
do
        # Everything after last /
        FILE=${LINE##*/}
        # Everything before last /
        DIR="${LINE%/*}
        echo mv "$LINE" "${DIR}/${FILE##*#}"
done