Linux : les fondamentaux de la ligne de commande
Quitter

Leçon 3 sur 18 · Utilisateur

Fichiers et dossiers : touch, mkdir, cp, mv, rm

25 min Ubuntu 24.04

Objectif

Créer, copier, déplacer, renommer et supprimer des fichiers et des dossiers en ligne de commande, en connaissant les options qui évitent les catastrophes.

L'essentiel

  • touch crée un fichier vide, mkdir crée un dossier (-p pour créer toute une branche).
  • cp copie (l'original reste), mv déplace ou renomme (l'original disparaît).
  • rm supprime définitivement : il n'y a pas de corbeille en ligne de commande.
  • Pour un dossier : cp -r, rm -r. rmdir ne supprime qu'un dossier vide.
  • -i demande confirmation, -v affiche ce qui est fait. Utilisez-les tant que vous débutez.

1. Créer : touch et mkdir

touch

touch crée un fichier vide s'il n'existe pas. S'il existe déjà, il ne change pas son contenu, il met seulement sa date de modification à l'heure actuelle.

touch commandes.log                 # crée un fichier vide
touch lundi.txt mardi.txt           # plusieurs fichiers d'un coup
ls -l commandes.log                 # taille 0

mkdir

mkdir factures                      # crée un dossier
mkdir clients fournisseurs          # plusieurs dossiers
mkdir archives/2026                 # ERREUR si archives n'existe pas
mkdir -p archives/2026/janvier      # -p crée les parents manquants, sans erreur s'ils existent
mkdir -pv archives/2026/fevrier     # -v affiche chaque dossier créé

Avec les accolades de bash, on crée toute une structure en une ligne :

mkdir -p archives/2026/{janvier,fevrier,mars}
# bash transforme cela en : archives/2026/janvier archives/2026/fevrier archives/2026/mars

2. Copier : cp

cp stock.csv stock-sauvegarde.csv          # copie avec un nouveau nom
cp stock.csv archives/                     # copie dans un dossier, même nom
cp stock.csv archives/stock-janvier.csv    # copie dans un dossier, nouveau nom
cp a.txt b.txt c.txt archives/             # plusieurs fichiers → la dernière cible doit être un dossier
cp -r site/ site-sauvegarde/               # -r (récursif) : obligatoire pour copier un dossier
cp -i stock.csv archives/                  # -i : demande avant d'écraser un fichier existant
cp -p stock.csv archives/                  # -p : garde la date, les droits et le propriétaire
cp -a site/ site-sauvegarde/               # -a (archive) : -r + -p + liens, la copie la plus fidèle

Attention : par défaut, cp écrase sans prévenir un fichier de même nom à la destination (sauf si un alias cp -i existe, comme pour root sur Rocky / RHEL).

3. Déplacer et renommer : mv

Sous Linux, renommer = déplacer vers un nouveau nom. La commande standard pour renommer est donc mv (une commande rename existe aussi, mais sa syntaxe change d'une distribution à l'autre : évitez-la au début).

mv vieux.tmp ancien.tmp                    # renomme dans le même dossier
mv ancien.tmp archives/                    # déplace dans un dossier
mv vieux.tmp archives/ancien.tmp           # déplace ET renomme
mv dossier1 dossier2                       # un dossier se déplace aussi, sans option -r
mv -i stock.csv archives/                  # demande avant d'écraser
mv -n stock.csv archives/                  # n'écrase jamais (no clobber)

Un mv dans le même disque est instantané, même pour un dossier de 50 Go : Linux change seulement le nom dans l'annuaire du disque, il ne recopie pas les données.

4. Supprimer : rm et rmdir

rm vieux.tmp                         # supprime un fichier
rm -i *.tmp                          # demande confirmation pour chaque fichier
rm -v vieux.tmp                      # affiche ce qui est supprimé
rmdir brouillons                     # supprime un dossier VIDE (sinon : Directory not empty)
rm -r brouillons                     # supprime un dossier ET tout son contenu
rm -rf brouillons                    # -f : ne pose aucune question, ignore les fichiers absents

Il n'y a pas de corbeille. Un fichier supprimé avec rm est perdu (sauf sauvegarde). Prenez trois habitudes :

  1. Relisez la commande avant d'appuyer sur Entrée, surtout avec -r et *.
  2. Faites d'abord un ls avec le même motif : ls *.tmp, puis rm *.tmp.
  3. Méfiez-vous des espaces : rm -rf / srv/boutique (avec une espace après le /) viserait la racine. Les versions récentes de rm refusent de supprimer / sans l'option --no-preserve-root, mais ne comptez pas sur ce filet.

5. Les jokers (globbing)

Le shell remplace certains caractères par la liste des noms qui correspondent, avant de lancer la commande :

Motif Correspond à Exemple
* n'importe quelle suite de caractères (même vide) *.csv → tous les CSV
? exactement un caractère f?.txt → f1.txt, fA.txt
[abc] un caractère parmi la liste essai[12].txt
[0-9] un chiffre ticket-[0-9][0-9].txt
ls *.csv                  # tous les fichiers .csv du dossier courant
cp *.csv archives/2026/   # les copie tous
rm essai?.txt             # supprime essai1.txt, essai2.txt… mais pas essai10.txt

* n'inclut pas les fichiers cachés (ceux qui commencent par un point).

6. Un exemple de bout en bout

Youssef tient une épicerie à Fès. Chaque mois, il archive son fichier de stock :

cd /srv/boutique
mkdir -p archives/2026                         # préparer le rangement
cp -p stock.csv archives/2026/stock-janvier.csv # garder une copie datée
mv vieux.tmp archives/ancien.tmp               # ranger un fichier oublié
ls brouillons                                  # vérifier ce qu'on va supprimer
rm -r brouillons                               # puis supprimer
ls -R archives                                 # contrôler le résultat

Résumé des commandes

Commande Rôle Option clé
touch f créer un fichier vide / mettre à jour sa date —
mkdir d créer un dossier -p parents
cp src dst copier -r dossiers, -a copie fidèle, -i confirmation
mv src dst déplacer / renommer -i, -n
rm f supprimer -r dossiers, -i confirmation, -f forcer
rmdir d supprimer un dossier vide —

Pièges fréquents

  • Oublier -r pour copier un dossier : cp: -r not specified; omitting directory.
  • Écraser un fichier avec cp ou mv sans s'en rendre compte : utilisez -i ou -n.
  • rm -rf avec une variable vide dans un script : rm -rf "$DOSSIER"/* devient rm -rf /* si la variable est vide. Vérifiez toujours vos variables.
  • Confondre rmdir et rm -r : rmdir est volontairement prudent et refuse un dossier non vide.

Lab

Sur ce lab Ubuntu 24.04, une petite boutique a ses fichiers dans /srv/boutique. Vous allez, dans l'ordre :

  1. créer un fichier vide de journal des commandes ;
  2. créer le dossier d'archives de l'année en une commande ;
  3. archiver une copie du stock (l'original doit rester) ;
  4. ranger et renommer un vieux fichier temporaire ;
  5. supprimer le dossier des brouillons.

Faites un ls -R /srv/boutique au début et à la fin pour voir le chemin parcouru.

Quiz

  1. Quelle est la différence entre cp et mv ?
  2. Que fait mkdir -p a/b/c si a n'existe pas ?
  3. Comment renommer rapport.txt en rapport-2026.txt ?
  4. Pourquoi rmdir brouillons peut-il échouer, et que faut-il utiliser à la place ?
  5. Que fait touch sur un fichier qui existe déjà ?
Réponses
  1. cp crée une copie et laisse l'original ; mv déplace (ou renomme) : l'original disparaît de son ancien emplacement.
  2. Il crée a, puis a/b, puis a/b/c, sans erreur.
  3. mv rapport.txt rapport-2026.txt
  4. Parce que le dossier n'est pas vide ; il faut rm -r brouillons (après avoir vérifié son contenu).
  5. Il ne touche pas au contenu, il met à jour la date de modification.

Sources de référence : Debian Reference (licence libre), Ubuntu Server Guide (CC BY-SA 3.0), documentation Red Hat Enterprise Linux (CC BY-SA 3.0). Texte original MasterLinux.

Exercices pratiques

À réaliser sur Ubuntu 24.04

Le terminal en ligne ouvre bientôt. En attendant, réalisez ces tâches sur votre machine Linux, une machine virtuelle ou WSL.

  1. Créez un fichier vide /srv/boutique/commandes.log
    Afficher un indiceLa commande touch crée un fichier vide s'il n'existe pas.
    Voir la solution
    touch /srv/boutique/commandes.log

    Vérification : test -f /srv/boutique/commandes.log

  2. Créez d'un seul coup le dossier /srv/boutique/archives/2026 (le dossier archives n'existe pas encore).
    Afficher un indicemkdir a besoin de l'option -p pour créer aussi les dossiers parents manquants.
    Voir la solution
    mkdir -p /srv/boutique/archives/2026

    Vérification : test -d /srv/boutique/archives/2026

  3. Copiez /srv/boutique/stock.csv dans /srv/boutique/archives/2026 sous le nom stock-janvier.csv (l'original doit rester en place).
    Afficher un indicecp source destination — la destination peut contenir le nouveau nom.
    Voir la solution
    cp /srv/boutique/stock.csv /srv/boutique/archives/2026/stock-janvier.csv

    Vérification : grep -q pain /srv/boutique/archives/2026/stock-janvier.csv && test -f /srv/boutique/stock.csv

  4. Déplacez /srv/boutique/vieux.tmp dans /srv/boutique/archives en le renommant ancien.tmp
    Afficher un indicemv déplace ET renomme en une seule commande.
    Voir la solution
    mv /srv/boutique/vieux.tmp /srv/boutique/archives/ancien.tmp

    Vérification : test -f /srv/boutique/archives/ancien.tmp && test ! -e /srv/boutique/vieux.tmp

  5. Supprimez le dossier /srv/boutique/brouillons avec tout son contenu.
    Afficher un indicermdir refuse un dossier non vide ; il faut rm avec l'option -r. Relisez la commande avant Entrée !
    Voir la solution
    rm -r /srv/boutique/brouillons

    Vérification : test -d /srv/boutique/archives && test ! -e /srv/boutique/brouillons

Références officielles consultées : Debian Reference — chapitre 1, commandes de manipulation de fichiers ; Ubuntu Server Guide — notions de base. Texte original MasterLinux.