You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Exemples pratiques tirés du fichier source 08-gestion_des_fichiers_et_repertoires.md.
Liste des scripts
Tests sur les fichiers
#
Script
Section
Description
01
01_tests_existence.sh
Tests de base d'existence
Tests -e, -f, -d, -L sur fichiers, répertoires et liens symboliques
02
02_tests_permissions.sh
Tests de permissions
Tests -r, -w, -x sur fichiers avec permissions 444, 755 et 644
03
03_tests_contenu.sh
Tests de contenu et taille
Analyse avec -s, wc -c, wc -l, wc -w et aperçu head
04
04_tests_comparaisons.sh
Tests avancés et comparaisons
Comparaison par contenu (cmp), taille (wc -c) et date (-nt, -ot)
05
05_validation_fichier.sh
Fonction de validation
Validation complète : existence, type, permissions et taille
Parcours de répertoires
#
Script
Section
Description
06
06_parcours_simple.sh
Parcours simple avec for
Parcours avec for, globstar et classification par extension
07
07_parcours_find.sh
Parcours récursif avec find
find -type f/d, comptage et filtrage par extension
08
08_parcours_actions.sh
Parcours avec actions
Traitement par type (sh, txt, jpg/png, pdf) avec statistiques
09
09_parcours_personnalise.sh
Parcours personnalisé
Parcours récursif avec indentation et modes (afficher, taille, complet)
10
10_recherche_filtrage.sh
Recherche et filtrage
Recherche multicritères : nom, extension, taille, date
Manipulation de chemins
#
Script
Section
Description
11
11_extraction_chemins.sh
Extraction d'informations
basename, dirname, extension et type de chemin
12
12_construction_chemins.sh
Construction de chemins
Jointure de chemins et normalisation (doubles slashes)
13
13_resolution_chemins.sh
Résolution et validation
Expansion absolue, readlink, tests d'existence et permissions
14
14_utilitaires_chemins.sh
Utilitaires de chemins
Chemin sécurisé, nom unique et chemin relatif
Opérations courantes
#
Script
Section
Description
15
15_copie_fichiers.sh
Copie de fichiers
Copie sécurisée avec modes normal/backup et vérification d'intégrité SHA-256
16
16_deplacement_renommage.sh
Déplacement et renommage
Déplacement sécurisé et renommage intelligent avec nettoyage de caractères
17
17_suppression_securisee.sh
Suppression sécurisée
Suppression avec corbeille et nettoyage par critères (temp, vide)
18
18_utilitaires_gestion.sh
Utilitaires de gestion
Synchronisation de répertoires, rapport espace disque et création de projet
Exécution
# Exécuter un script individuel
bash exemples/chapitre08/01_tests_existence.sh
# Exécuter tous les scriptsforscriptin exemples/chapitre08/*.sh;doecho"=== $(basename "$script") ==="
bash "$script"echo""done
Note : Le script 04_tests_comparaisons.sh contient un sleep 2 pour créer des timestamps différents, il met quelques secondes de plus.
Sorties attendues
01_tests_existence.sh
=== Tests d'existence de fichiers ===
Éléments créés pour les tests :
(listing ls -la)
✅ 'fichier_test.txt' existe
✅ 'dossier_test' existe
❌ 'fichier_inexistant.txt' n'existe pas
✅ 'lien_symbolique' existe
=== Tests de type ===
📄 'fichier_test.txt' est un fichier régulier
📁 'dossier_test' est un répertoire
❌ 'fichier_inexistant.txt' n'existe pas
🔗 'lien_symbolique' est un lien symbolique
02_tests_permissions.sh
=== Tests de permissions ===
Fichiers créés avec permissions :
-rwxr-xr-x fichier_executable.sh
-r--r--r-- fichier_lecture_seule.txt
-rw-r--r-- fichier_normal.txt
Tests pour 'fichier_lecture_seule.txt' :
✅ Lisible
❌ Non modifiable
❌ Non exécutable
Tests pour 'fichier_executable.sh' :
✅ Lisible
✅ Modifiable
✅ Exécutable
Tests pour 'fichier_normal.txt' :
✅ Lisible
✅ Modifiable
❌ Non exécutable
03_tests_contenu.sh
=== Tests de contenu et taille ===
Analyse de 'fichier_avec_contenu.txt' :
📏 Fichier non vide (29 octets)
📊 1 ligne(s), 5 mot(s)
👁️ Aperçu :
Ce fichier contient du texte
Analyse de 'fichier_plusieurs_lignes.txt' :
📏 Fichier non vide (24 octets)
📊 3 ligne(s), 6 mot(s)
Analyse de 'fichier_vide.txt' :
📄 Fichier vide
📊 0 ligne(s), 0 mot(s)
04_tests_comparaisons.sh
=== Tests avancés et comparaisons ===
Comparaison de 'version1.txt' et 'version2.txt' :
❌ Contenus différents
✅ Tailles identiques (10 octets)
📅 'version2.txt' est plus récent
Comparaison de 'version1.txt' et 'copie_version1.txt' :
✅ Contenus identiques
✅ Tailles identiques (10 octets)
📅 'copie_version1.txt' est plus récent
05_validation_fichier.sh
=== Tests de validation ===
=== Validation de 'fichier_normal.txt' ===
✅ Fichier valide
=== Validation de 'fichier_vide.txt' ===
⚠️ Avertissements :
- Fichier vide
=== Validation de 'script.sh' ===
✅ Fichier valide
=== Validation de 'dossier_test' ===
✅ Fichier valide
=== Validation de 'fichier_inexistant.txt' ===
❌ Erreurs détectées :
- Fichier inexistant
=== Recherche et filtrage avancés ===
Recherche de tous les scripts :
extension = sh
📄 test_structure/scripts/deploy.sh
📄 test_structure/scripts/backup.sh
Total : 2 fichier(s) trouvé(s)
Recherche de fichiers contenant 'photo' :
📄 test_structure/images/photo2.png
📄 test_structure/images/photo1.jpg
Total : 2 fichier(s) trouvé(s)
11_extraction_chemins.sh
=== Manipulation de chemins ===
Chemin : '/home/utilisateur/documents/rapport.pdf'
Nom de fichier : 'rapport.pdf'
Répertoire : '/home/utilisateur/documents'
Nom de base : 'rapport'
Extension : 'pdf'
Type : Chemin absolu
Chemin : 'fichier_sans_extension'
Nom de fichier : 'fichier_sans_extension'
Répertoire : '.'
Pas d'extension
Type : Chemin relatif
...
12_construction_chemins.sh
=== Construction de chemins ===
Résultat : '/home/user/documents/projets/mon_script.sh'
Résultat : './scripts/../config/app.conf'
=== Normalisation de chemins ===
'/home//user/documents/' → '/home/user/documents'
'///var///log///' → '/var/log'
13_resolution_chemins.sh
=== Résolution et validation de chemins ===
Validation de 'test_structure' :
✅ Répertoire
Permissions : rwx
Validation de 'chemin_inexistant' :
❌ N'existe pas
14_utilitaires_chemins.sh
=== Utilitaires de manipulation de chemins ===
Création de chemins sécurisés :
'mon fichier<>important.txt' → 'test_structure/docs/mon_fichierimportant.txt'
'script|dangereux.sh' → 'test_structure/docs/scriptdangereux.sh'
' fichier avec espaces ' → 'test_structure/docs/fichier_avec_espaces'
Création de noms uniques :
Nom unique 1 : 'test_structure/nouveau_fichier_2.txt'
Nom unique 2 : 'test_structure/nouveau_fichier_3.txt'
Nom unique 3 : 'test_structure/nouveau_fichier_4.txt'
15_copie_fichiers.sh
=== Opérations de copie ===
1. Copie normale :
📄 Copie de fichier...
✅ Copie réussie
✅ Intégrité vérifiée
2. Copie avec backup :
💾 Sauvegarde existant vers : copie1.txt.backup.YYYYMMDD_HHMMSS
✅ Copie réussie
✅ Intégrité vérifiée
3. Copie de répertoire :
📁 Copie récursive de répertoire...
✅ Copie réussie
=== Opérations de suppression ===
1. Suppression avec corbeille :
🗑️ Déplacement vers la corbeille
✅ Déplacé vers la corbeille
2. Nettoyage des fichiers temporaires :
🧹 Suppression des fichiers temporaires...
Suppression : autre.tmp
✅ Nettoyage terminé
3. Nettoyage des fichiers vides :
📄 Suppression des fichiers vides...
Suppression : (fichiers vides listés)
📁 Suppression des répertoires vides...
✅ Nettoyage terminé
18_utilitaires_gestion.sh
=== Utilitaires de gestion de fichiers ===
1. Synchronisation :
📄 Nouveau : manual.pdf
📄 Nouveau : readme.txt
✅ Synchronisation terminée
2. Rapport d'espace disque :
📊 Taille totale : 15B
📄 Top 10 des plus gros fichiers :
15B - docs/readme.txt
...
📊 Répartition par extension :
.sh : 2 fichier(s)
...
3. Création de structure de projet :
✅ Structure créée avec succès (type web)
mon_nouveau_projet/
├── docs/
├── src/
│ ├── css/style.css
│ ├── images/
│ ├── index.html
│ └── js/script.js
└── tests/