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?

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).


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/


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.