Linux : fichiers et dossiers
mkdir projet # dossiermkdir -p projet/src/composants # avec les dossiers intermédiairestouch notes.txt # fichier vide (ou met à jour la date d'un fichier existant)echo "Bonjour" > bonjour.txt # crée ou ÉCRASE le fichier avec ce texteecho "Suite" >> bonjour.txt # ajoute à la fincat > liste.txt # saisir du texte, terminer par Ctrl+DCopier, déplacer, renommer
Section intitulée « Copier, déplacer, renommer »cp rapport.txt sauvegarde.txtcp rapport.txt ~/documents/cp -r projet projet-copie # copie récursive d'un dossiercp -a projet /sauvegarde/ # archive : conserve droits, dates, propriétairescp -i rapport.txt existant.txt # demande confirmation avant d'écrasercp -v *.txt dossier/ # affiche ce qui est copié
mv rapport.txt rapport-2026.txt # renommermv rapport.txt ~/documents/ # déplacermv -i source destinationmv dossier1 dossier2 # si dossier2 existe : déplace dedans, sinon renommeLe déplacement (mv) à l’intérieur d’un même disque est instantané (il ne copie pas les données).
Supprimer
Section intitulée « Supprimer »rm fichier.txtrm -i *.tmp # confirme chaque suppressionrm -I *.log # confirme une fois si plus de trois fichiersrm -r dossier/ # dossier et son contenurmdir dossier-viderm -f fichier # sans demande, ignore les fichiers absentsVoir le contenu d’un fichier
Section intitulée « Voir le contenu d’un fichier »cat fichier.txt # tout afficherless fichier.txt # page par page (espace : suite, / : chercher, q : quitter)head -n 20 fichier.txt # 20 premières lignestail -n 20 fichier.txt # 20 dernièrestail -f /var/log/syslog # suivre un fichier en direct (Ctrl+C pour arrêter)wc -l fichier.txt # nombre de lignesfile inconnu.bin # type du fichierstat fichier.txt # taille, dates, droits, inodeless est le bon outil pour lire un long fichier (cat le fait défiler d’un coup).
| Type | Commande | Particularité |
|---|---|---|
| Lien symbolique | ln -s cible lien |
Un « raccourci » : pointe vers un chemin ; devient cassé si la cible disparaît |
| Lien physique | ln cible lien |
Un second nom pour le même contenu ; même disque, fichiers seulement |
ln -s /srv/monsite/versions/2026-01-15 /srv/monsite/courant # « courant » désigne la version activels -l /srv/monsite/readlink -f /srv/monsite/courantln -sfn /srv/monsite/versions/2026-02-01 /srv/monsite/courant # basculer vers une autre versionLes liens symboliques servent à basculer entre versions (déploiements), ou à donner un nom commode à un chemin long.
Rechercher
Section intitulée « Rechercher »Par nom : find
Section intitulée « Par nom : find »find /var/log -name "*.log" # par nomfind . -iname "*.JPG" # insensible à la cassefind . -type d -name "node_modules" # dossiersfind /home -user alice # d'un utilisateurfind . -size +100M # fichiers de plus de 100 Mofind . -mtime -1 # modifiés depuis moins d'un jourfind . -mtime +30 # modifiés il y a plus de 30 joursfind /tmp -type f -name "*.tmp" -delete # supprimer (après vérification !)find . -name "*.log" -exec gzip {} \; # exécuter une commande sur chaque résultatfind . -type f -name "*.txt" -print0 | xargs -0 grep -l "motif"Mettre les critères avant une action destructrice : lancer d’abord la commande sans -delete pour voir ce qu’elle trouve.
Par nom, rapide : locate
Section intitulée « Par nom, rapide : locate »sudo apt install plocatesudo updatedb # met à jour l'index (automatique chaque jour)locate nginx.conflocate interroge un index : très rapide, mais ne voit pas les fichiers créés depuis la dernière mise à jour.
Dans les fichiers : grep
Section intitulée « Dans les fichiers : grep »grep "erreur" fichier.loggrep -i "erreur" fichier.log # insensible à la cassegrep -n "erreur" fichier.log # avec numéro de lignegrep -r "motdepasse" /etc 2>/dev/null # récursifgrep -v "debug" fichier.log # lignes SANS le motifgrep -c "erreur" fichier.log # nombre de lignesgrep -E "erreur|alerte" fichier.log # expression régulière étenduegrep -rn "TODO" --include="*.js" .Taille et espace
Section intitulée « Taille et espace »df -h # espace disque par système de fichiersdu -sh dossier/ # taille d'un dossierdu -h --max-depth=1 /var | sort -h # dossiers les plus grosls -lh fichiersudo apt install ncdu && ncdu /var # navigation interactivePour approfondir (inodes, fichiers supprimés mais ouverts) : Linux avancé : disques et systèmes de fichiers.
Archives et compression
Section intitulée « Archives et compression »| Format | Création | Extraction |
|---|---|---|
.tar.gz |
tar czf archive.tar.gz dossier/ |
tar xzf archive.tar.gz |
.tar.xz |
tar cJf archive.tar.xz dossier/ |
tar xJf archive.tar.xz |
.tar.zst |
tar --zstd -cf archive.tar.zst dossier/ |
tar --zstd -xf archive.tar.zst |
.zip |
zip -r archive.zip dossier/ |
unzip archive.zip |
.gz (un fichier) |
gzip fichier |
gunzip fichier.gz |
tar czf sauvegarde-$(date +%F).tar.gz ~/documents # créertar tzf sauvegarde-2026-01-15.tar.gz | head # lister le contenu SANS extrairetar xzf sauvegarde-2026-01-15.tar.gz -C /tmp/restauration # extraire dans un dossier précistar xzf archive.tar.gz fichier-precis.txt # extraire un seul élémentsudo apt install zip unzipMnémonique de tar : créer, x extraire, t lister, z gzip, f fichier (suivi du nom, toujours en dernier parmi les options). Toujours lister une archive de provenance inconnue avant de l’extraire.
Copier vers ou depuis une autre machine
Section intitulée « Copier vers ou depuis une autre machine »scp rapport.txt alice@monserveur:/home/alice/scp -r projet alice@monserveur:/srv/rsync -av --progress projet/ alice@monserveur:/srv/projet/Voir SSH : transferts pour scp, rsync et sftp.
Droits des fichiers créés
Section intitulée « Droits des fichiers créés »Un nouveau fichier reçoit des droits par défaut (umask) : en général rw-r--r-- (644) pour un fichier et rwxr-xr-x (755) pour un dossier. ls -l les affiche ; chmod et chown les modifient (Utilisateurs et droits).
Noms de fichiers : bonnes pratiques
Section intitulée « Noms de fichiers : bonnes pratiques »| Faire | Éviter |
|---|---|
rapport-annuel-2026.pdf |
Espaces, accents et caractères spéciaux (Rapport Final (v2).pdf) |
| Minuscules et tirets | Majuscules à la casse variable (Rapport.pdf et rapport.pdf coexistent !) |
Dates au format 2026-01-15 (tri naturel) |
Dates 15-01-26 ou 01/15 (/ est interdit dans un nom) |
Extensions explicites (.txt, .md) |
Noms commençant par - (pris pour des options) |
Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
cp: omitting directory 'dossier' |
Ajouter -r |
rm: cannot remove 'x': Is a directory |
rm -r (ou rmdir si vide) |
Permission denied |
Droits insuffisants : Utilisateurs et droits |
mv: cannot stat 'x': No such file or directory |
Nom ou casse incorrects ; ls pour vérifier |
Argument list too long |
Trop de fichiers pour rm * : find . -name '*.log' -delete |
No space left on device |
df -h (espace) et df -i (inodes), du pour trouver le coupable |
Lien symbolique cassé (en rouge dans ls) |
La cible n’existe plus : readlink -f lien |
tar: Removing leading '/' from member names |
Message d’information : tar retire le / initial par sécurité |
| Fichier créé avec un nom étrange | Utiliser des guillemets, ou ls -b ; supprimer avec rm -- -nom |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Mêmes commandes sur les deux versions. Sur 26.04, /tmp est en mémoire : ne pas y laisser de gros fichiers (utiliser /var/tmp ou son dossier personnel).
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Manuels :
man find,man tar,man grep, Ubuntu Server : commandes utiles - Suite : Utilisateurs et droits