Come posso creare cartelle in cartelle nel terminale


12

Ho una cartella chiamata musicdove al suo interno ci sono tutte le cartelle degli artisti. C'è un modo per creare queste cartelle: 1. Albums, 2. EP, 3. Singles, 4. Livein tutte le cartelle artista con un comando?

Risposte:


12

Certo, eseguilo nella cartella della musica dove si trovano le cartelle dell'artista:

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

È possibile eseguirlo nella CLI oppure renderlo uno script di shell aggiungendolo #!/bin/shcome prima riga e salvandolo in un file. Non dimenticare di rendere eseguibile il file.

Per quanto riguarda ciò che fa: scorre su tutte le directory ( */) all'interno della directory corrente, quindi per ciascuna di queste directory, scorre sulla sottocartella desiderata (la seconda for), quindi crea la sottocartella desiderata (relativa).


1
Oh, è bellissimo, questo passerà alla storia ;-)
Steve,

18

Potresti voler indossare le tue parentesi graffe per questo

Per il bene di questo argomento fingeremo che la musica non esiste

Nella tua directory di base per ./music useremo il comando -p per creare sotto-directory dove necessario e le parentesi graffe verranno usate per creare un piccolo array

Il comando -pè abbreviato per parent, se è più facile ricordare che puoi usare --parentinvece

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

Se vuoi giocare con questo puoi, per esempio

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

Hai espressioni nidificate, puoi inserire le parentesi graffe nel mezzo di una stringa e puoi anche consentire alla sottodirectory di seguire l'esempio, e puoi essere specifico con le tue sottodirectory per un particolare array

Ti suggerisco di creare un file da qualche parte in cui puoi creare i tuoi modelli con tali comandi e dare loro descrizioni

Visita questa pagina per maggiori informazioni https://www.linuxjournal.com/content/bash-brace-expansion e https://www.linux.com/tutorials/all-about-curly-braces-bash/


5
Personalmente mi piace di più questa risposta, perché non ha bisogno che tu pensi come programmatore. Raramente uso il metodo delle parentesi graffe, ma è molto più elegante.
jawtheshark,

6
OP vuole che il 4 sottodir sia collocato all'interno di ogni sottodir stesso music, quindi l'arg corretto mkdirsarebbe./music/*/{"1. Albums","2. EP","3. Singles","4. Live"}
joH1,

1
Cordiali saluti, -pè la forma abbreviata di --parent.
Amedee Van Gasse,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.