Aller au contenu

Linux : fichiers et dossiers

Fenêtre de terminal
mkdir projet # dossier
mkdir -p projet/src/composants # avec les dossiers intermédiaires
touch 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 texte
echo "Suite" >> bonjour.txt # ajoute à la fin
cat > liste.txt # saisir du texte, terminer par Ctrl+D
Fenêtre de terminal
cp rapport.txt sauvegarde.txt
cp rapport.txt ~/documents/
cp -r projet projet-copie # copie récursive d'un dossier
cp -a projet /sauvegarde/ # archive : conserve droits, dates, propriétaires
cp -i rapport.txt existant.txt # demande confirmation avant d'écraser
cp -v *.txt dossier/ # affiche ce qui est copié
mv rapport.txt rapport-2026.txt # renommer
mv rapport.txt ~/documents/ # déplacer
mv -i source destination
mv dossier1 dossier2 # si dossier2 existe : déplace dedans, sinon renomme

Le déplacement (mv) à l’intérieur d’un même disque est instantané (il ne copie pas les données).

Fenêtre de terminal
rm fichier.txt
rm -i *.tmp # confirme chaque suppression
rm -I *.log # confirme une fois si plus de trois fichiers
rm -r dossier/ # dossier et son contenu
rmdir dossier-vide
rm -f fichier # sans demande, ignore les fichiers absents
Fenêtre de terminal
cat fichier.txt # tout afficher
less fichier.txt # page par page (espace : suite, / : chercher, q : quitter)
head -n 20 fichier.txt # 20 premières lignes
tail -n 20 fichier.txt # 20 dernières
tail -f /var/log/syslog # suivre un fichier en direct (Ctrl+C pour arrêter)
wc -l fichier.txt # nombre de lignes
file inconnu.bin # type du fichier
stat fichier.txt # taille, dates, droits, inode

less 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
Fenêtre de terminal
ln -s /srv/monsite/versions/2026-01-15 /srv/monsite/courant # « courant » désigne la version active
ls -l /srv/monsite/
readlink -f /srv/monsite/courant
ln -sfn /srv/monsite/versions/2026-02-01 /srv/monsite/courant # basculer vers une autre version

Les liens symboliques servent à basculer entre versions (déploiements), ou à donner un nom commode à un chemin long.

Fenêtre de terminal
find /var/log -name "*.log" # par nom
find . -iname "*.JPG" # insensible à la casse
find . -type d -name "node_modules" # dossiers
find /home -user alice # d'un utilisateur
find . -size +100M # fichiers de plus de 100 Mo
find . -mtime -1 # modifiés depuis moins d'un jour
find . -mtime +30 # modifiés il y a plus de 30 jours
find /tmp -type f -name "*.tmp" -delete # supprimer (après vérification !)
find . -name "*.log" -exec gzip {} \; # exécuter une commande sur chaque résultat
find . -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.

Fenêtre de terminal
sudo apt install plocate
sudo updatedb # met à jour l'index (automatique chaque jour)
locate nginx.conf

locate interroge un index : très rapide, mais ne voit pas les fichiers créés depuis la dernière mise à jour.

Fenêtre de terminal
grep "erreur" fichier.log
grep -i "erreur" fichier.log # insensible à la casse
grep -n "erreur" fichier.log # avec numéro de ligne
grep -r "motdepasse" /etc 2>/dev/null # récursif
grep -v "debug" fichier.log # lignes SANS le motif
grep -c "erreur" fichier.log # nombre de lignes
grep -E "erreur|alerte" fichier.log # expression régulière étendue
grep -rn "TODO" --include="*.js" .
Fenêtre de terminal
df -h # espace disque par système de fichiers
du -sh dossier/ # taille d'un dossier
du -h --max-depth=1 /var | sort -h # dossiers les plus gros
ls -lh fichier
sudo apt install ncdu && ncdu /var # navigation interactive

Pour approfondir (inodes, fichiers supprimés mais ouverts) : Linux avancé : disques et systèmes de fichiers.

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
Fenêtre de terminal
tar czf sauvegarde-$(date +%F).tar.gz ~/documents # créer
tar tzf sauvegarde-2026-01-15.tar.gz | head # lister le contenu SANS extraire
tar xzf sauvegarde-2026-01-15.tar.gz -C /tmp/restauration # extraire dans un dossier précis
tar xzf archive.tar.gz fichier-precis.txt # extraire un seul élément
sudo apt install zip unzip

Mné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.

Fenêtre de terminal
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.

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).

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)
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).