Here is what I would do (there may be more efficient ways to automate this, but this is a quick hack that should achieve what you need). I hope I've understood your question correctly.
To get a list of all the directories (and their subdirectories) within an existing directory:
Open Terminal, and navigate to the existing folder containing the structure you would like to duplicate (if you are not familiar with Terminal, I am happy to give more specific guidance on how to do this. Basically, if you think of Terminal like Finder, the default folder that you are "viewing" when you open Terminal is your user folder. From there, you can type pwd
to see where you are, ls
to see a list of everything in the current directory, cd [folder name]
to move into a folder in the directory, and then cd ..
to move back up a level to the parent directory).
Type the following command:
find . -type d
This will list all of the directories contained in the current directory, as well as each of their subdirectories (i.e. it will not stop searching until there are no more subdirectories to enter).
The list will have entries that look something like this:
./directory1
./directory1/subdirectory1
./directory2
./directory2/sub2/sub3/sub4
We need to clean the formatting up just a bit before we can use this text.
To clean up the text so it can be used to recreate that folder structure:
Copy this list into any plain text editor (not Microsoft Word); I use TextWrangler but TextEdit comes with your computer. Using the find and replace feature, remove every instance of ./
(leave the "replace with" box empty and press replace all). This will delete all the initial periods and slashes, but retain subsequent slashes which indicate subdirectories.
Also, delete all new lines (i.e. the text may wrap onto multiple lines, but there should be no explicit new paragraphs in there). The above example will now look like:
directory1 directory1/subdirectory1 directory2 directory2/sub2/sub3/sub4
To create an arbitrary number of new folders with one command:
Note: You could also do this step using folder names from a different source, I was slightly confused by what the source of the folder names was in your question
You should now have a list of folder/subfolders that is all on one line (though it may wrap to multiple lines when it is rendered in your text editor), and has no punctuation*. Copy all of this text to your clipboard. Go back to Terminal, and use cd [folder]
, cd ..
, ls
and pwd
to navigate to the destination folder where you want to recreate the folder structure, as described above.
Once you are in the right folder, type:
mkdir -p
and then commandv, and hit enter. Make sure there is a space (and nothing else) between mkdir -p
and the first directory name, and one space between each subsequent directory name.
I know people have varying levels of familiarity with UNIX and the Terminal environment, so if this is confusing feel free to comment which steps need more clarification.
*Note that if any of the directory names you paste into Terminal have spaces or non alphanumeric characters such as (./'!?:_)
etc., you need to escape them or it will not work. That is, for every space or other weird character, you must put a \
directly before it (note the difference between \
and /
). So music/the beatles
becomes music/the\ beatles
. You can use find and replace for this as well.