J'apprends Unix en ligne et je suis tombé sur cette question pour créer une structure hiérarchique. J'ai créé les répertoires à l'aide de la commande mkdir
mais je suis bloqué lors de la création des fichiers dans le répertoire.
Ma commande pour créer des répertoires est
mkdir -p mydir/{colors/{basic,blended},shape,animals/{mammals,reptiles}}
Voici deux façons de le faire. Il y a plus, mais le concept serait le même: soit étendre ce que vous avez, soit parcourir une liste et scinder chaque élément de la liste en plusieurs parties.
Il n'y a rien de spécial à faire avec touch
name__. Étendez simplement les mêmes arguments que vous aviez pour la commande mkdir
pour inclure des fichiers.
bash-4.3$ mkdir -p mydir/{colors/{basic,blended},shape,animals/{mammals,reptiles}}
bash-4.3$ tree mydir
mydir
├── animals
│ ├── mammals
│ └── reptiles
├── colors
│ ├── basic
│ └── blended
└── shape
7 directories, 0 files
bash-4.3$ touch mydir/{colors/{basic/{red,blue,green},blended/{yellow,orange,pink}},shape/{circle,square,cube},animals/{mammals/{platipus,bat,dog},reptiles/{snakes,crocodile,lizard}}}
bash-4.3$ tree mydir
mydir
├── animals
│ ├── mammals
│ │ ├── bat
│ │ ├── dog
│ │ └── platipus
│ └── reptiles
│ ├── crocodile
│ ├── lizard
│ └── snakes
├── colors
│ ├── basic
│ │ ├── blue
│ │ ├── green
│ │ └── red
│ └── blended
│ ├── orange
│ ├── pink
│ └── yellow
└── shape
├── circle
├── cube
└── square
Si vous observez, tous vos répertoires ont des fichiers à créer. Nous pouvons donc créer une liste d'éléments (en réalité un tableau bash) et la parcourir, en utilisant mkdir
avec suppression du suffixe, puis touch
name__. Comme ça:
bash-4.3$ arr=( mydir/{colors/{basic/{red,blue,green},blended/{yellow,orange,pink}},shape/{circle,square,cube},animals/{mammals/{platipus,bat,dog},reptiles/{snakes,crocodile,lizard}}} )
bash-4.3$ for i in "${arr[@]}"; do mkdir -p "${i%/*}" && touch "$i"; done
bash-4.3$ tree mydir
mydir
├── animals
│ ├── mammals
│ │ ├── bat
│ │ ├── dog
│ │ └── platipus
│ └── reptiles
│ ├── crocodile
│ ├── lizard
│ └── snakes
├── colors
│ ├── basic
│ │ ├── blue
│ │ ├── green
│ │ └── red
│ └── blended
│ ├── orange
│ ├── pink
│ └── yellow
└── shape
├── circle
├── cube
└── square
7 directories, 15 files
Remarque latérale: si vous avez des espaces dans les noms de fichiers ou de répertoires, veillez à les citer en double ou en deux, par exemple:
arr=( mydir/{'with space',without_space/{file1,file2}} )