212

いくつかのデータベースをnice/needディレクトリ構造にダンプするクイックバックアップスクリプトを作成していますが、ディレクトリを作成する前に、ディレクトリが存在することを確認するためにテストする必要があることに気付きました。私が持っているコードは機能しますが、それを行うためのより良い方法はありますか?

[ -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"
4

4 に答える 4

475

次のように文書化され-pているパラメータを使用できます。

-p、-parents

存在する場合はエラーなし、必要に応じて親ディレクトリを作成します

それで:

mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"
于 2009-11-13T20:42:53.663 に答える
69
mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"
于 2009-11-13T20:44:18.000 に答える
16

既存の回答は間違いなく目的を解決しますが、2つの異なるサブディレクトリの下にネストされたディレクトリ構造を複製する場合は、次のようにすることができます。

mkdir -p {main,test}/{resources,scala/com/company}

呼び出されたディレクトリの下に次のディレクトリ構造が作成されます。

├── main
│   ├── resources
│   └── scala
│       └── com
│           └── company
└── test
    ├── resources
    └── scala
        └── com
            └── company

この例は、 SBTディレクトリ構造を作成するためにこのリンクから抜粋したものです。

于 2017-12-22T04:50:51.240 に答える
0
mkdir -p newDir/subdir{1..8}
ls newDir/
subdir1 subdir2 subdir3 subdir4 subdir5 subdir6 subdir7 subdir8
于 2019-10-24T22:08:01.933 に答える