Manipulation des fichiers et dossiers
Table des matières
- Créer des fichiers et dossiers
- Copier avec cp
- Déplacer et renommer avec mv
- Supprimer avec rm et rmdir
- Wildcards et patterns
- Exercices pratiques
1 - Créer des fichiers et dossiers
Créer un fichier vide : touch
# Créer un fichier vide
touch fichier.txt
# Créer plusieurs fichiers
touch fichier1.txt fichier2.txt fichier3.txt
# Mettre à jour la date de modification (si le fichier existe)
touch fichier_existant.txt
Si le fichier existe déjà, touch met à jour sa date de modification sans modifier son contenu.
Créer un répertoire : mkdir
# Créer un dossier
mkdir mon_dossier
# Créer plusieurs dossiers
mkdir dossier1 dossier2 dossier3
# Créer une arborescence complète (option -p)
mkdir -p projets/2024/janvier
# Créer avec permissions spécifiques
mkdir -m 755 dossier_public
L'option -p (parents)
# Sans -p : erreur si le parent n'existe pas
mkdir projets/2024/janvier
# mkdir: cannot create directory 'projets/2024/janvier': No such file or directory
# Avec -p : crée toute l'arborescence
mkdir -p projets/2024/janvier
# Crée projets/, puis 2024/, puis janvier/
Créer un fichier avec du contenu
# Avec echo et redirection
echo "Bonjour" > fichier.txt
# Avec cat et heredoc
cat > fichier.txt << EOF
Ligne 1
Ligne 2
Ligne 3
EOF
🔝 Retour à la table des matières
2 - Copier avec cp
cp = copy
Syntaxe
cp [options] source destination
Copier des fichiers
# Copier un fichier
cp fichier.txt copie.txt
# Copier vers un autre répertoire
cp fichier.txt /tmp/
cp fichier.txt /tmp/nouveau_nom.txt
# Copier plusieurs fichiers vers un dossier
cp fichier1.txt fichier2.txt /tmp/
Copier des répertoires
# Copier un répertoire (option -r obligatoire)
cp -r dossier/ copie_dossier/
# Copier récursivement
cp -r projets/ /backup/projets/
Options importantes
| Option | Effet |
|---|---|
-r ou -R | Récursif (obligatoire pour les dossiers) |
-i | Demande confirmation avant écrasement |
-v | Mode verbeux (affiche ce qui est copié) |
-p | Préserve les permissions et dates |
-u | Copie seulement si source plus récente |
-n | Ne pas écraser les fichiers existants |
Exemples pratiques
# Copier avec confirmation
cp -i important.txt /backup/
# Copier en préservant les attributs
cp -p script.sh /usr/local/bin/
# Copier avec affichage détaillé
cp -rv projet/ /backup/projet/
# Copier seulement les fichiers plus récents
cp -u *.log /archive/
Par défaut, cp écrase les fichiers existants sans demander ! Utilisez -i pour être prudent.
🔝 Retour à la table des matières
3 - Déplacer et renommer avec mv
mv = move
mv sert à déplacer ET à renommer des fichiers et dossiers.
Syntaxe
mv [options] source destination
Renommer
# Renommer un fichier
mv ancien_nom.txt nouveau_nom.txt
# Renommer un dossier
mv ancien_dossier nouveau_dossier
Déplacer
# Déplacer un fichier
mv fichier.txt /tmp/
# Déplacer et renommer
mv fichier.txt /tmp/nouveau_nom.txt
# Déplacer plusieurs fichiers
mv fichier1.txt fichier2.txt /destination/
# Déplacer un dossier
mv mon_dossier/ /autre/emplacement/
Options importantes
| Option | Effet |
|---|---|
-i | Demande confirmation avant écrasement |
-v | Mode verbeux |
-n | Ne pas écraser les fichiers existants |
-u | Déplace seulement si source plus récente |
-f | Force (pas de confirmation) |
Exemples pratiques
# Déplacer avec confirmation
mv -i important.txt /backup/
# Renommer plusieurs fichiers (avec for)
for f in *.txt; do mv "$f" "${f%.txt}.bak"; done
# Déplacer tous les logs
mv -v *.log /archive/
# Organiser par extension
mv *.jpg images/
mv *.pdf documents/
mv ne copie pas les données, il change juste l'emplacement. C'est instantané sur le même système de fichiers !
🔝 Retour à la table des matières
4 - Supprimer avec rm et rmdir
rmdir - Supprimer un répertoire vide
# Supprimer un dossier vide
rmdir dossier_vide
# Supprimer plusieurs dossiers vides
rmdir dossier1 dossier2
# Supprimer l'arborescence vide
rmdir -p a/b/c # Supprime c, puis b, puis a (si vides)
rmdir ne fonctionne QUE sur les répertoires vides. Pour supprimer un dossier avec du contenu, utilisez rm -r.
rm - Supprimer fichiers et dossiers
# Supprimer un fichier
rm fichier.txt
# Supprimer plusieurs fichiers
rm fichier1.txt fichier2.txt fichier3.txt
# Supprimer un répertoire et son contenu
rm -r dossier/
# Forcer la suppression (sans confirmation)
rm -f fichier.txt
# Combinaison courante
rm -rf dossier/
Options de rm
| Option | Effet |
|---|---|
-r ou -R | Récursif (dossiers et contenu) |
-f | Force (ignore fichiers inexistants, pas de confirmation) |
-i | Demande confirmation pour chaque fichier |
-I | Demande confirmation si >3 fichiers |
-v | Mode verbeux |
Précautions
Il n'y a PAS de corbeille en ligne de commande. Une fois supprimé, c'est définitif !
# TRÈS DANGEREUX - Ne jamais faire :
rm -rf / # Supprime TOUT le système
rm -rf /* # Idem
rm -rf ~/* # Supprime tout le home
Bonnes pratiques
# 1. Utiliser -i pour confirmer
rm -ri dossier/
# 2. Vérifier d'abord avec ls
ls dossier_a_supprimer/
rm -r dossier_a_supprimer/
# 3. Utiliser le chemin complet
rm -r /home/user/tmp/dossier/
# 4. Créer un alias de sécurité (dans .bashrc)
alias rm='rm -i'
🔝 Retour à la table des matières
5 - Wildcards et patterns
Les wildcards (jokers) permettent de sélectionner plusieurs fichiers avec un pattern.
Les wildcards principaux
| Wildcard | Signification | Exemple |
|---|---|---|
* | N'importe quels caractères | *.txt = tous les .txt |
? | Un seul caractère | fichier?.txt = fichier1.txt, fichierA.txt |
[abc] | Un caractère parmi a, b ou c | fichier[123].txt |
[a-z] | Un caractère dans la plage | fichier[a-z].txt |
[!abc] | Aucun de ces caractères | fichier[!0-9].txt |
Exemples avec *
# Tous les fichiers .txt
ls *.txt
# Tous les fichiers commençant par "log"
ls log*
# Tous les fichiers contenant "2024"
ls *2024*
# Copier tous les .jpg
cp *.jpg images/
# Supprimer tous les .tmp
rm *.tmp
Exemples avec ?
# Fichiers avec un seul caractère avant .txt
ls ?.txt
# Résultat : a.txt, 1.txt, etc.
# Fichiers log avec un chiffre
ls log?.txt
# Résultat : log1.txt, log2.txt, etc.
Exemples avec []
# Fichiers avec chiffre
ls fichier[0-9].txt
# Fichiers avec lettre majuscule
ls fichier[A-Z].txt
# Fichiers avec a, b ou c
ls fichier[abc].txt
# Tout SAUF les chiffres
ls fichier[!0-9].txt
Combinaisons
# Tous les fichiers commençant par a-f
ls [a-f]*
# Fichiers .txt ou .log
ls *.txt *.log
# Images jpg ou png
cp *.[jp][pn]g images/
# ou plus simplement
cp *.{jpg,png} images/
Expansion d'accolades
# Créer plusieurs fichiers
touch fichier{1,2,3,4,5}.txt
# Crée fichier1.txt, fichier2.txt, etc.
# Créer une séquence
touch fichier{01..10}.txt
# Crée fichier01.txt à fichier10.txt
# Copier avec renommage
cp fichier.txt{,.bak}
# Équivalent à : cp fichier.txt fichier.txt.bak
🔝 Retour à la table des matières
6 - Exercices pratiques
Exercice 1 : Créer une structure
# Créez cette arborescence :
# projet/
# ├── src/
# ├── docs/
# ├── tests/
# └── README.md
mkdir -p projet/{src,docs,tests}
touch projet/README.md
# Vérifiez
ls -la projet/
Exercice 2 : Copier et déplacer
# Préparation
mkdir -p exercice/{originaux,copies,archives}
touch exercice/originaux/fichier{1..5}.txt
# 1. Copiez tous les fichiers vers copies/
cp exercice/originaux/*.txt exercice/copies/
# 2. Déplacez fichier1.txt vers archives/
mv exercice/copies/fichier1.txt exercice/archives/
# 3. Renommez fichier2.txt en important.txt
mv exercice/copies/fichier2.txt exercice/copies/important.txt
# Vérifiez
ls -R exercice/
Exercice 3 : Nettoyage
# Préparation
mkdir -p nettoyage
touch nettoyage/fichier{1..10}.txt
touch nettoyage/fichier{1..5}.tmp
touch nettoyage/fichier{1..3}.log
# 1. Supprimez tous les .tmp
rm nettoyage/*.tmp
# 2. Supprimez les .log avec confirmation
rm -i nettoyage/*.log
# 3. Comptez les fichiers restants
ls nettoyage/ | wc -l
Quiz
Q1. Comment créer le dossier a/b/c s'ils n'existent pas ?
Réponse
mkdir -p a/b/c
Q2. Comment copier un dossier avec tout son contenu ?
Réponse
cp -r dossier/ destination/
Q3. Quel wildcard représente "un seul caractère" ?
Réponse
? (point d'interrogation)
Q4. Comment supprimer un dossier non-vide ?
Réponse
rm -r dossier/ ou rm -rf dossier/
🔝 Retour à la table des matières
Points clés à retenir
touchcrée des fichiers vides,mkdircrée des dossiersmkdir -pcrée toute l'arborescencecpcopie (-rpour les dossiers)mvdéplace ET renommermsupprime (-rpour les dossiers) - IRRÉVERSIBLE !- Wildcards :
*(tout),?(un caractère),[abc](liste) - Toujours vérifier avant de supprimer !
🔝 Retour à la table des matières
← Chapitre précédent | Chapitre suivant : Visualisation et édition →