Hi Adarsh,
I recently came across this same issue, saving the associated document(s) to a folder of each entry within a collection. What I thought would (should?) be a simple task turned into a bit of work so I will share what I did. If anyone knows an easier way to do this I would love to see it!
I want to input X number of users, create a folder with that users name and place the corresponding documents into the users folder from the form submission.
First my simple test form ready to be submitted:

Once the form is submitted I save the form and documents ( Collection\File ) to an incoming Repository folder and then call my workflow.
the test workflow:

The first step, Retrieve BP Variables I have 3:
Collection [Collection]
File (Collection [File Upload]
Username (Collection) [Text]
The 2nd step, 'For Each Row' iterates over my Collection

The 3rd step creates my user folder simply using the %(ForEachRow_Username) token
The 4th step iterates over each one of the attachment files submitted

and now things get a little more tricky ...
As I iterate over each file submitted I will use two tokens, %(ForEachFile_CurrentFile_Path) and %(ForEachFile_CurrentFile_Name)
%(ForEachFile_CurrentFile_Path) is a bit misleading, it is not a folder path into the repository but a path of the Collection of files. Since I submitted 2 users in this example I will get 2 paths
Collection\File\1 and Collection\File\2
With 2 users submitting 2 files each the full iteration over the File Collection would iterate 4 times:
%(ForEachFile_CurrentFile_Path) %(ForEachFile_CurrentFile_Name)
Collection\File\1 doco_1
Collection\File\1 doco_2
Collection\File\2 doco_4
Collection\File\2 doco_5
So you can see (?) that the docs for Collection\File\1 are for the first user in our collection, and Collection\File\2 are for the second user in our collection ( and on Collection\File\X for x user )
Jumping back up to the 'For Each Row' action ... I know the iteration number that I am on and the user it corresponds to so in step 5 I use that token %(ForEachRow_Iteration) to do a conditional to see if my Collection\File\NUMBER matches the %(ForEachFile_CurrentFile_Path)

If it does, I know this file belongs to the %(ForEachRow_Username) but first I have to find the file in the repository with step 6, now that I know the name of the file.
{LF:Name="%(ForEachFile_CurrentFile_Name)", Type="D"} & {LF:LOOKIN="LFICHE\\tmp\test"}
However since I am also iterating over every file every time, I may have already moved the file so I do another conditional to make sure my search result found the file.
Step 7

If so I can move the file into the folder I created with the Create Entry activity, step 8.
Hope that made a little sense ...... happy to explain more if needed.
This workflow is not the most efficient since it will iterate over and search for files even after they have been moved. You can improve efficiency by indexing tokens, etc but this was my test workflow and I think it explains the idea better than a more complicated flow.
The other caveat is if two files are uploaded with the same name you will have to do a little more work to determine which file is which!
In practice we are using a little more efficient workflow, putting fields on our submitted documents to help with searches and trying to determine duplicate file name owners.
I would love to hear of an easier way to do this but this does work ....
Andrew