问题
I am creating a quick backup script that will dump some databases into a nice/neat directory structure and I realized that I need to test to make sure that the directories exist before I create them. The code I have works, but it seems that there is a better way to do it. Any suggestions?
[ -d \"$BACKUP_DIR\" ] || mkdir \"$BACKUP_DIR\"
[ -d \"$BACKUP_DIR/$client\" ] || mkdir \"$BACKUP_DIR/$client\"
[ -d \"$BACKUP_DIR/$client/$year\" ] || mkdir \"$BACKUP_DIR/$client/$year\"
[ -d \"$BACKUP_DIR/$client/$year/$month\" ] || mkdir \"$BACKUP_DIR/$client/$year/$month\"
[ -d \"$BACKUP_DIR/$client/$year/$month/$day\" ] || mkdir \"$BACKUP_DIR/$client/$year/$month/$day\"
回答1:
You can use the -p
parameter, which is documented as:
-p, --parents
no error if existing, make parent directories as needed
So:
mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"
回答2:
$ mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"
回答3:
While existing answers definitely solve the purpose, if your'e looking to replicate nested directory structure under two different subdirectories, then you can do this
mkdir -p {main,test}/{resources,scala/com/company}
It will create following directory structure under the directory from where it is invoked
├── main
│ ├── resources
│ └── scala
│ └── com
│ └── company
└── test
├── resources
└── scala
└── com
└── company
The example was taken from this link for creating SBT directory structure
回答4:
mkdir -p newDir/subdir{1..8}
ls newDir/
subdir1 subdir2 subdir3 subdir4 subdir5 subdir6 subdir7 subdir8
来源:https://stackoverflow.com/questions/1731767/how-to-create-nonexistent-subdirectories-recursively-using-bash