Comment puis-je créer des dossiers dans des dossiers dans le terminal

12

J'ai un dossier nommé musicoù se trouve à l'intérieur tous les dossiers d'artistes. Est - il possible de créer ces dossiers: 1. Albums, 2. EP, 3. Singles, 4. Livedans tous les dossiers d'artistes avec une commande?

wjandrea
la source

Réponses:

12

Bien sûr, exécutez ceci dans le dossier musique où se trouvent les dossiers artistes:

for artist in */; do
   for folder in "1. Albums" "2. EP" "3. Singles" "4. Live"; do
      mkdir "$artist/$folder"
   done
done

Vous pouvez l'exécuter sur votre CLI, ou vous pouvez en faire un script shell en ajoutant #!/bin/shcomme première ligne et en l'enregistrant dans un fichier. N'oubliez pas de rendre le fichier exécutable.

Quant à ce qu'il fait: il itère sur tous les répertoires ( */) du répertoire actuel, puis pour chacun de ces répertoires, itère sur le sous-dossier souhaité (le second for), puis crée le sous-dossier souhaité (relatif).

jawtheshark
la source
1
Oh c'est beau, cela restera dans l'histoire ;-)
Steve
18

Vous voudrez peut-être mettre vos accolades {bouclés} pour celui-ci

Pour cet argument, nous ferons semblant ./music n'existe pas

Dans votre répertoire de base pour ./music, nous utiliserons la commande -p pour créer des sous-répertoires si nécessaire et les accolades seront utilisées pour créer un petit tableau

La commande -pest l'abréviation de parent, s'il est plus facile de se souvenir que vous pouvez utiliser à la --parentplace

mkdir -p ./music/{"1. Albums","2. EP","3. Singles","4. Live"}

Si vous souhaitez jouer avec cela, vous pouvez, par exemple,

mkdir -p ./folder/prefix{a{1/only,2,3},b,c}suffix/more{z,y,x}

Vous avez des expressions imbriquées, vous pouvez insérer les accolades au milieu d'une chaîne et vous pouvez également autoriser le sous-répertoire à suivre, et vous pouvez être spécifique avec vos sous-répertoires pour un tableau particulier

Je vous suggère de créer un fichier quelque part où vous pouvez créer vos propres modèles avec de telles commandes et leur donner des descriptions

Visitez cette page pour plus d'informations https://www.linuxjournal.com/content/bash-brace-expansion et https://www.linux.com/tutorials/all-about-curly-braces-bash/

Steve
la source
5
Personnellement, j'aime mieux cette réponse, car elle ne nécessite pas que vous pensiez en tant que programmeur. J'utilise rarement la méthode des accolades, mais c'est beaucoup plus élégant.
jawtheshark
6
OP veut que le 4 sous-répertoire soit placé à l'intérieur de chaque sous-répertoire lui-même music, donc l'argument correct mkdirserait./music/*/{"1. Albums","2. EP","3. Singles","4. Live"}
joH1
1
FYI, -pest la forme abrégée de --parent.
Amedee Van Gasse