Leçon 3 sur 18 · Utilisateur
Fichiers et dossiers : touch, mkdir, cp, mv, rm
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
touchcrée un fichier vide,mkdircrée un dossier (-ppour créer toute une branche).cpcopie (l'original reste),mvdéplace ou renomme (l'original disparaît).rmsupprime définitivement : il n'y a pas de corbeille en ligne de commande.- Pour un dossier :
cp -r,rm -r.rmdirne supprime qu'un dossier vide. -idemande confirmation,-vaffiche 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 aliascp -iexiste, 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 :
- Relisez la commande avant d'appuyer sur Entrée, surtout avec
-ret*. - Faites d'abord un
lsavec le même motif :ls *.tmp, puisrm *.tmp. - Méfiez-vous des espaces :
rm -rf / srv/boutique(avec une espace après le/) viserait la racine. Les versions récentes dermrefusent 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
-rpour copier un dossier :cp: -r not specified; omitting directory. - Écraser un fichier avec
cpoumvsans s'en rendre compte : utilisez-iou-n. rm -rfavec une variable vide dans un script :rm -rf "$DOSSIER"/*devientrm -rf /*si la variable est vide. Vérifiez toujours vos variables.- Confondre
rmdiretrm -r:rmdirest 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 :
- créer un fichier vide de journal des commandes ;
- créer le dossier d'archives de l'année en une commande ;
- archiver une copie du stock (l'original doit rester) ;
- ranger et renommer un vieux fichier temporaire ;
- supprimer le dossier des brouillons.
Faites un ls -R /srv/boutique au début et à la fin pour voir le chemin parcouru.
Quiz
- Quelle est la différence entre
cpetmv? - Que fait
mkdir -p a/b/csian'existe pas ? - Comment renommer
rapport.txtenrapport-2026.txt? - Pourquoi
rmdir brouillonspeut-il échouer, et que faut-il utiliser à la place ? - Que fait
touchsur un fichier qui existe déjà ?
Réponses
cpcrée une copie et laisse l'original ;mvdéplace (ou renomme) : l'original disparaît de son ancien emplacement.- Il crée
a, puisa/b, puisa/b/c, sans erreur. mv rapport.txt rapport-2026.txt- Parce que le dossier n'est pas vide ; il faut
rm -r brouillons(après avoir vérifié son contenu). - 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.