man linux_files
Linux — Cheat Sheet : Opérations sur les fichiers
Référence rapide pour la création, copie, déplacement, visualisation et manipulation des fichiers et répertoires.
Référence rapide pour la création, copie, déplacement, visualisation et manipulation des fichiers et répertoires.
Navigation et listing
ls # lister le répertoire courantls -l # format long (permissions, taille, date)ls -lh # tailles human-readable (K, M, G)ls -la # inclure les fichiers cachésls -lt # trier par date de modificationls -lS # trier par taillels -R # récursifls --color=auto # coloration syntaxiquell # alias courant pour ls -lah
tree # arborescence en arbretree -L 2 # limiter à 2 niveauxtree -d # répertoires uniquementtree -h # avec taillestree -I "node_modules|.git" # exclure des patternsCréation de fichiers et répertoires
touch fichier.txt # créer un fichier vide (ou MAJ timestamp)touch -t 202401011200 fichier.txt # forcer un timestamp (YYYYMMDDhhmm)touch fichier{1,2,3}.txt # créer fichier1.txt, fichier2.txt, fichier3.txt
mkdir dossier # créer un répertoiremkdir -p a/b/c # créer les parents si nécessairemkdir -m 750 dossier # avec permissions spécifiquesmkdir {logs,config,data} # créer plusieurs dossiers
# Redirection vers un fichierecho "contenu" > fichier.txt # écraserecho "contenu" >> fichier.txt # ajouter (append)cat > fichier.txt << EOF # heredocligne 1ligne 2EOFCopie, déplacement, suppression
Copie (cp)
cp source.txt dest.txt # copier un fichiercp -i source.txt dest.txt # confirmer si écrasementcp -r dossier/ copie/ # copier un répertoire (récursif)cp -a dossier/ copie/ # copier en préservant tout (archive mode)cp -u source dest # copier seulement si source plus récentecp -v source dest # mode verbeuxcp -p source dest # préserver permissions, timestampscp --backup=numbered src dst # créer des sauvegardes numérotées
# Copier plusieurs fichiers vers un dossiercp fichier1.txt fichier2.txt /dest/cp *.log /var/archive/Déplacement / renommage (mv)
mv ancien.txt nouveau.txt # renommermv fichier.txt /autre/chemin/ # déplacermv -i fichier.txt dest/ # confirmer si écrasementmv -u fichier.txt dest/ # déplacer seulement si plus récentmv -v fichier.txt dest/ # mode verbeuxmv dossier/ /nouveau/chemin/ # déplacer un répertoire
# Renommer en masse (sans rename)for f in *.txt; do mv "$f" "${f%.txt}.md"; done
# Avec la commande rename (Perl)rename 's/\.txt$/.md/' *.txt # renommer l'extensionrename 's/prefix_//' prefix_*.txt # supprimer un préfixeSuppression (rm)
rm fichier.txt # supprimer un fichierrm -i fichier.txt # demander confirmationrm -f fichier.txt # forcer (sans confirmation)rm -r dossier/ # récursif (répertoire)rm -rf dossier/ # récursif + forcé
rmdir dossier/ # supprimer un répertoire VIDErmdir -p a/b/c # supprimer les parents vides
# Suppression sécuriséeshred -vzu fichier.txt # écraser avant suppressionrm -rf irréversible
Il n’y a pas de corbeille en ligne de commande. Une suppression est définitive. Toujours vérifier le chemin avant d’exécuter rm -rf.
Visualisation de fichiers
Affichage simple
cat fichier.txt # afficher tout le contenucat -n fichier.txt # avec numéros de lignecat -A fichier.txt # afficher les caractères non imprimablescat fichier1.txt fichier2.txt # concaténer et afficher
tac fichier.txt # afficher en sens inverse (dernière ligne en premier)
head fichier.txt # 10 premières lignes (défaut)head -n 20 fichier.txt # 20 premières ligneshead -c 100 fichier.txt # 100 premiers octets
tail fichier.txt # 10 dernières lignes (défaut)tail -n 20 fichier.txt # 20 dernières lignestail -c 100 fichier.txt # 100 derniers octetstail -f fichier.log # suivre en temps réeltail -F fichier.log # suivre + réouvrir si rotationLecture interactive
more fichier.txt # lecture page par page (basique)# Espace : page suivante | Entrée : ligne suivante | q : quitter
less fichier.txt # lecture avancée# Espace / PgDn : page suivante | PgUp : page précédente# /motif : rechercher | n : occurrence suivante | N : précédente# g : début | G : fin | q : quitter# F : mode tail (temps réel) | Ctrl+C : quitter le mode tail
less +F fichier.log # démarrer directement en mode tailless +/motif fichier.txt # démarrer à la première occurrence
# Options utiles de lessless -N fichier.txt # avec numéros de ligneless -S fichier.txt # pas de wrapping des longues lignesless -i fichier.txt # recherche insensible à la casseHexadécimal et binaire
xxd fichier.bin # dump hexadécimal + ASCIIxxd -l 64 fichier.bin # 64 premiers octets seulementxxd -c 8 fichier.bin # 8 octets par ligneod -x fichier.bin # dump octal/hexa (GNU coreutils)hexdump -C fichier.bin # format canonique
file fichier.bin # détecter le type de fichierstrings fichier.bin # extraire les chaînes imprimablesstrings -n 8 fichier.bin # chaînes d'au moins 8 caractèresLiens
# Lien symbolique (soft link)ln -s /chemin/source /chemin/lien # créer un lien symboliqueln -sf /nouvelle/source lien # forcer (écraser si existant)ls -la # voir les liens (-> cible)readlink lien # lire la cible du lienreadlink -f lien # cible absolue résolue
# Lien dur (hard link)ln source.txt lien_dur.txt # partage le même inode# Contrainte : même système de fichiers, pas pour les répertoires
# Informations sur les inodesls -i fichier.txt # numéro d'inodestat fichier.txt # infos complètes (inode, timestamps, etc.)Permissions et attributs
stat fichier.txt # permissions, taille, timestamps, inodels -l fichier.txt # format court des permissions
# Permissions spécialeschmod u+s fichier # setuid (exécuter avec le uid du owner)chmod g+s dossier # setgid (nouveaux fichiers héritent du groupe)chmod +t /tmp # sticky bit (seul le owner peut supprimer)
# Notation symboliquechmod u=rwx,g=rx,o= fichier # définir précisémentchmod a+r fichier # tous : ajouter lecture (a = ugo)
# Attributs étendus (ext4)chattr +i fichier # rendre immuable (même root)chattr -i fichier # retirer l'immuabilitéchattr +a fichier # append onlylsattr fichier # lister les attributs
# ACL (Access Control Lists)getfacl fichier # afficher les ACLsetfacl -m u:alice:rwx fichier # donner rwx à alicesetfacl -m g:devs:rx fichier # donner rx au groupe devssetfacl -x u:alice fichier # supprimer les ACL d'alicesetfacl -b fichier # supprimer toutes les ACLsetfacl -R -m u:alice:rx dossier/ # récursifRecherche de fichiers
find . -name "*.log" # par nom (case-sensitive)find . -iname "*.LOG" # insensible à la cassefind . -type f # fichiers uniquementfind . -type d # répertoires uniquementfind . -type l # liens symboliques uniquement
find . -size +10M # > 10 Mofind . -size -1k # < 1 Kofind . -size +10M -size -100M # entre 10 Mo et 100 Mo
find . -mtime -7 # modifiés dans les 7 derniers joursfind . -mtime +30 # modifiés il y a plus de 30 joursfind . -newer reference.txt # plus récents que reference.txtfind . -atime -1 # accédés dans les dernières 24h
find . -user alice # appartenant à alicefind . -group devs # appartenant au groupe devsfind . -perm 644 # permissions exactesfind . -perm /u+x # ayant l'exécution pour l'owner
# Combiner et exécuterfind . -name "*.tmp" -delete # supprimerfind . -name "*.log" -exec gzip {} \; # compresser chaquefind . -name "*.sh" -exec chmod +x {} \; # rendre exécutablesfind . -type f -name "*.txt" | xargs grep -l "motif" # filtrer le contenufind . -maxdepth 2 -name "config.yml" # limiter la profondeurComparaison de fichiers
diff fichier1.txt fichier2.txt # différences ligne par lignediff -u fichier1.txt fichier2.txt # format unifié (comme git diff)diff -r dossier1/ dossier2/ # comparer des répertoiresdiff -i fichier1.txt fichier2.txt # insensible à la cassediff -w fichier1.txt fichier2.txt # ignorer les espaces
colordiff fichier1 fichier2 # diff coloré (si installé)vimdiff fichier1 fichier2 # comparaison côte à côte dans vimsdiff fichier1 fichier2 # comparaison côte à côte (texte)
cmp fichier1 fichier2 # comparer octet par octet (binaire)md5sum fichier # empreinte MD5sha256sum fichier # empreinte SHA-256sha256sum -c checksums.txt # vérifier une liste de checksumsSystème de fichiers
mount # lister les points de montagemount /dev/sdb1 /mnt/data # monter un disquemount -t ext4 /dev/sdb1 /mnt/data # avec type explicitemount -o ro /dev/sdb1 /mnt/data # en lecture seulemount -o remount,rw / # remonter en lecture/écritureumount /mnt/data # démonterumount -l /mnt/data # démonter en mode lazy
df -h # espace disque (human-readable)df -hT # avec types de FSdu -sh dossier/ # taille d'un dossierdu -sh * | sort -h # tailles triéesdu -h --max-depth=1 /var # tailles à 1 niveau de profondeurdu -ah dossier/ | sort -h | tail -20 # 20 plus gros éléments
lsblk -f # blocs avec FS et UUIDblkid # UUID et types de FSfindmnt # arborescence des montagesfindmnt /home # info sur un point de montage
# /etc/fstabUUID=xxxx /mnt/data ext4 defaults,noatime 0 2# champ 5 : dump (0=non) | champ 6 : fsck order (0=skip, 1=root, 2=autres)Bonnes pratiques
- Utiliser
cp -apour préserver propriétaire, permissions et timestamps lors d’une copie. - Toujours utiliser des guillemets autour des chemins contenant des espaces :
rm "mon fichier.txt". - Préférer
lessàmore— il est plus puissant et disponible sur tous les systèmes modernes. - Vérifier les checksums SHA-256 des fichiers téléchargés avant toute installation.
- Utiliser
find … -print0 | xargs -0pour gérer les noms de fichiers avec espaces.
# Exemple robuste avec xargs et noms de fichiers avec espacesfind . -name "*.log" -print0 | xargs -0 gzip
# Toujours tester find avant d'ajouter -delete ou -exec rmfind . -name "*.tmp" # prévisualiserfind . -name "*.tmp" -delete # supprimer seulement si OK