How can I create folders in folders in terminal
You may want to put on your {curly} braces for this one
For the sake of this argument we will pretend ./music doesn't exist
In your base directory for ./music we will use the -p command to create sub-directories where needed and the curly braces will be used to create a small array
The command -p
is short for parent, if it's easier to remember you may use --parent
instead
mkdir -p ./music/{"1. Albums","2. EP","3. Singles","4. Live"}
If you wish to play around with this you may, for example
mkdir -p ./folder/prefix{a{1/only,2,3},b,c}suffix/more{z,y,x}
You have nested expressions, you may insert the braces in to the middle of a string and you can also allow the subdirectory to follow suit, and you can be specific with your sub directories for a particular array
I suggest you make a file somewhere where you can make your own templates with such commands and give them descriptions
Visit this page for more information https://www.linuxjournal.com/content/bash-brace-expansion and https://www.linux.com/tutorials/all-about-curly-braces-bash/
Sure, execute this in the music folder where the artist folders are:
for artist in */; do
for folder in "1. Albums" "2. EP" "3. Singles" "4. Live"; do
mkdir "$artist/$folder"
done
done
You can execute this on your CLI, or you can make it a shell script by adding #!/bin/sh
as the first line and saving it in a file. Don't forget to make the file executable.
As for what it does: it iterates over all directories (*/
) within the current directory, then for each of these directories, iterates over the desired subfolder (the second for
), and then makes the desired (relative) subfolder.