[shell] créer un répertoire, un sous-répertoire, un sous-sous répertoire, en un coup! (mkdirhier / mkdir -p)

Supposons que vous êtes (sous GNU/Linux ou unix, sous un terminal avec pour shell bash ou un autre similaire) dans le répertoire (ou “dossier”) /current/ , que /current/existant/ existe déjà et que vous voulez créer les répertoires /current/existant/new_dir_0/ , /current/existant/new_dir_0/sub_dir_1/ , /current/existant/new_dir_0/sub_dir_1/sub_sub_dir_2/ en une seule ligne…

La version longue et assez connue est bien sûr:

  • mkdir new_dir_0/
  • mkdir new_dir_0/sub_dir_1/
  • mkdir new_dir_0/sub_dir_1/sub_sub_dir_2/

Bien tout cela peut remplace facilement par:

mkdir -p new_dir_0/sub_dir_1/sub_sub_dir_2/

(ou mkdirhier new_dir_0/sub_dir_1/sub_sub_dir_2/ )

Note 1 (pour mkdirhier): il faut que mkdirhier soit présent sur votre système, ce qui n’est pas évident du tout sur un serveur accédé en ssh… (mkdirhier a généralement pour chemin /usr/bin/X11/mkdirhier…). Il est donc plutôt conseillé de retenir mkdir -p.

Note 2: “mkdirhier” pour “make directory hierarchy”…

Tags: , , , , ,

4 Responses to “[shell] créer un répertoire, un sous-répertoire, un sous-sous répertoire, en un coup! (mkdirhier / mkdir -p)”

  1. Pinaraf Says:

    Et mkdir -p, ça pue ?
    mkdir -p new_dir0/sub_dir_1/sub_sub_dir2

  2. Shnoulle Says:

    et mkdir -p ?

    [Shnoulle@chenu ~]$ mkdir --help
    Usage: mkdir [OPTION] RÉPERTOIRE...
    Créer le(s) RÉPERTOIRE(s) si il(s) n'existe(nt) pas.

    -Z, --context=CONTEXT (SELinux) set security context to CONTEXT
    Les arguments obligatoires pour les options de formes longues le sont aussi
    pour les options de formes courtes.
    -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
    -p, --parents no error if existing, make parent directories as needed
    -v, --verbose print a message for each created directory
    --help afficher l'aide-mémoire
    --version afficher le nom et la version du logiciel

    ;)

  3. Vincent Fretin Says:

    Moi j’utilise l’option -p de mkdir depuis longtemps :
    mkdir -p new_dir_0/sub_dir_1/sub_sub_dir_2/

    En regardant le manuel de mkdirhier, il s’avère que c’est juste un wrapper vers mkdir -p.

  4. ddmdllt Says:

    @Pinaraf, Shnoulle: Oups… Me suis un peu laissé piégé par une page man que j’ai lu trop vite…

    @Vincent: Pas indiqué dans ma page man (pour moi version *actuellement* trouvable sur http://linuxcommand.org/man_pages/mkdirhier1.html).

Leave a Reply