Comment utiliser la commande touch sous linux pour créer et modifier des fichiers

🎯 L’essentiel

La commande touch crée des fichiers vides ou actualise leurs horodatages sans modifier leur contenu.

  • ✅ Créer un fichier : touch notes.txt crée notes.txt s’il n’existe pas.
  • ✅ Actualiser les dates : Sans option, touch modifie l’accès et la modification.
  • ✅ Éviter la création : L’option -c laisse intact un nom de fichier absent.
  • ✅ Copier une date : L’option -r reprend les horodatages d’un fichier de référence.

👉 Vérifiez le chemin et les dates avec ls ou stat avant d’automatiser la commande.

Comprendre la commande touch et les horodatages Linux

La commande touch crée un fichier vide si le chemin indiqué n’existe pas, ou actualise certaines dates si le fichier est déjà présent. Elle s’exécute dans le terminal et ne lance pas d’éditeur : aucun contenu n’est ajouté au fichier. Cette distinction la rend pratique pour préparer un fichier de configuration, un journal de test ou une entrée attendue par un script.

Sa syntaxe générale est touch [options] fichier. Par exemple, touch notes.txt crée notes.txt dans le répertoire courant. Si ce nom existe déjà, la commande conserve son contenu et actualise par défaut sa date d’accès et sa date de modification. Cette action sur les horodatages, plutôt que sur le texte du fichier, explique pourquoi touch intervient dans des tâches de création de fichiers comme dans certaines opérations de gestion des fichiers.

Différencier accès, modification et changement d’état

Linux associe plusieurs horodatages à un fichier. L’atime indique la date d’accès, liée notamment à une lecture. Le mtime correspond à la date de modification du contenu. Le ctime indique le changement des métadonnées du fichier, par exemple après une modification de droits ou de propriétaire. Malgré son nom, ctime n’est pas une date de création.

Les options -a et -m permettent de cibler respectivement l’accès et la modification. Elles peuvent être combinées, mais, sans ces options, touch actualise normalement les deux valeurs. La commande ne permet pas de fixer directement ctime à une date arbitraire : ce champ est géré par le système de fichiers à la suite d’un changement pertinent.

Repère Signification Effet courant de touch
🕒 atime Date d’accès au fichier Actualisée avec -a
📝 mtime Date de modification du contenu Actualisée avec -m
⚙️ ctime Date de changement des métadonnées Pas réglable directement

Les options de montage et les règles du système de fichiers peuvent influencer la façon dont les accès sont enregistrés. Pour vérifier l’état réel, stat notes.txt affiche davantage d’informations que la liste habituelle de ls -l. Dans un dépôt de code, par exemple, un développeur peut comparer mtime avant et après une commande pour confirmer que seul l’horodatage a changé.

Imaginons un script qui attend la présence de settings.ini avant de démarrer. touch peut créer ce fichier vide rapidement, mais cette opération ne fournit pas les paramètres requis par le programme. Le fichier existe alors, sans être nécessairement utilisable. Il faut donc distinguer la création physique d’un fichier de sa configuration correcte, surtout lorsque le logiciel vérifie seulement l’existence du chemin.

La documentation de GNU Coreutils décrit ces options et leur comportement dans l’environnement GNU. Les systèmes Linux proposent généralement cet utilitaire, mais les variantes d’Unix et les options disponibles peuvent différer. Retenez le point essentiel : touch agit sur l’existence et les dates du fichier, pas sur son contenu. Cette séparation évite de confondre création de fichiers et modification de fichiers.

découvrez comment utiliser la commande touch sous linux pour créer des fichiers, modifier leurs dates de modification et gérer les horodatages.
Comment redémarrer le spouleur d’impression sous windows 11 et résoudre les erreurs
Comment redémarrer le spouleur d’impression sous windows 11 et résoudre les erreurs

Le spouleur d’impression de Windows 11 peut être redémarré depuis les services Windows ou avec deux commandes d’administration. Cette opération relance le traitement des travaux en attente, mais peut annuler des documents qui n’ont pas encore été imprimés. Si le blocage revient, le pilote d’imprimante, la connexion ou un fichier... Lire la suite

Créer un ou plusieurs fichiers avec touch dans le terminal

La création de fichiers avec touch est directe : saisissez la commande, puis le chemin du fichier voulu. Avec touch rapport.txt, le fichier est créé dans le répertoire courant s’il n’existe pas. Pour le placer ailleurs, indiquez un chemin relatif, comme touch tests/rapport.txt, ou un chemin absolu adapté à votre système.

Le répertoire parent doit déjà exister et l’utilisateur doit avoir le droit d’y créer un fichier. touch ne crée pas les répertoires manquants. Si tests n’existe pas, la commande signale une erreur au lieu de construire toute l’arborescence. Dans ce cas, créez d’abord le dossier avec mkdir -p tests, puis relancez touch.

Créer plusieurs fichiers en une commande

Plusieurs noms peuvent suivre la commande, séparés par des espaces. Par exemple, touch entree.txt sortie.txt erreurs.log prépare trois fichiers dans le répertoire courant. Cette méthode est utile lorsqu’un script ou un exercice attend plusieurs chemins précis. Elle évite de relancer la commande pour chaque fichier et rend la liste des noms visible dans l’historique du shell.

Dans Bash, les accolades peuvent produire une série de noms : touch test{1..3}.txt correspond à test1.txt, test2.txt et test3.txt. Cette expansion est effectuée par le shell avant l’exécution de touch. Elle fonctionne dans Bash, mais ne doit pas être supposée dans tous les interpréteurs de commandes ou dans chaque contexte de script. Pour un script destiné à des environnements variés, une liste explicite est parfois plus facile à relire.

  • 📄 Fichier unique : touch brouillon.txt crée un fichier dans le dossier courant.
  • 📁 Chemin ciblé : touch logs/session.log utilise un répertoire déjà existant.
  • 🔢 Série Bash : touch test{1..3}.txt développe trois noms distincts dans Bash.

Pour vérifier le résultat, utilisez ls -l ou affichez les noms ciblés avec ls -l entree.txt sortie.txt erreurs.log. Un retour silencieux de touch indique généralement que la commande s’est exécutée, mais une vérification est préférable dans une procédure automatisée. Si le répertoire contient déjà des fichiers du même nom, ceux-ci ne sont pas vidés : leur contenu reste présent, même si leurs dates peuvent être actualisées.

Cette dernière nuance est importante lors d’une préparation de tests. Une commande touch sur un nom déjà utilisé ne remet pas le fichier à zéro et ne supprime aucune donnée. Pour fabriquer un fichier vide à partir d’un fichier existant, il faudrait une autre opération, qui peut effacer son contenu. Ne substituez donc pas touch à une commande de remise à zéro sans vérifier les effets attendus.

Les permissions expliquent aussi certains échecs. La création exige le droit d’écriture dans le répertoire parent, tandis que la mise à jour d’un fichier existant dépend des droits et des protections appliquées. Si Linux renvoie « Permission denied », vérifiez le chemin, le propriétaire et les droits avant d’envisager une commande avec privilèges élevés. Pour une routine de test, choisissez de préférence un dossier utilisateur dédié : cela limite le risque de modifier un fichier système par erreur.

Un usage courant consiste à créer un fichier marqueur qu’un autre processus surveille. Le nom doit alors correspondre exactement à celui que le script attend, y compris les majuscules et l’extension, car Linux distingue généralement les majuscules des minuscules dans les chemins. Une commande vérifiée dans le terminal est plus sûre qu’une série de créations approximatives.

💬

Modifier la date d’accès et la date de modification

Quand le fichier existe déjà, touch peut actualiser ses dates sans changer ses octets. La commande touch notes.txt actualise normalement la date d’accès et la date de modification à l’heure courante. Ce comportement peut servir à marquer un fichier comme récemment actualisé, ou à déclencher un outil qui surveille mtime. Il ne prouve toutefois pas que le contenu a été relu ou réécrit.

Pour ne modifier que l’accès, utilisez touch -a notes.txt. Pour cibler uniquement la date de modification, utilisez touch -m notes.txt. Ces options sont utiles quand un programme réagit à un champ précis, mais elles ne changent pas toutes les dates d’un fichier de la même manière. Contrôlez le résultat avec stat notes.txt, qui affiche notamment les valeurs d’accès, de modification et de changement.

Fixer une date ou reprendre celle d’un autre fichier

L’option -r reprend les horodatages d’un fichier de référence. Avec touch -r reference.txt copie.txt, touch applique à copie.txt les dates d’accès et de modification de reference.txt. Le fichier cible doit pouvoir être traité par l’utilisateur, et la référence doit être accessible. Cette méthode peut aider à rendre cohérentes des dates dans un jeu de test ou une copie locale, mais elle ne reproduit pas nécessairement les autres métadonnées.

Pour définir une date explicitement, GNU touch accepte notamment l’option -d avec une date interprétable, par exemple touch -d « 2024-06-15 10:30 » archive.txt. L’interprétation dépend de la syntaxe admise par la version de l’utilitaire et du fuseau horaire de l’environnement. Vérifiez ensuite avec stat plutôt que de supposer que la date affichée correspond au résultat voulu.

Une autre forme disponible avec GNU touch est -t, qui reçoit une valeur numérique structurée. Sa syntaxe est moins lisible qu’une date textuelle et les champs doivent être saisis au bon format. Pour éviter les erreurs de mois, de jour ou d’heure, privilégiez une commande documentée pour la version installée et contrôlez le résultat immédiatement. Les options précises peuvent varier dans les implémentations non GNU.

Dans une chaîne de validation, imaginons qu’un outil ne relance la compilation que si un fichier source est plus récent que son résultat. Actualiser mtime avec touch peut servir à tester ce mécanisme sans ouvrir d’éditeur. Cette manipulation ne valide pas le contenu source : elle ne fait que déplacer le repère temporel utilisé par l’outil. Une date modifiée manuellement peut ainsi induire en erreur un système de sauvegarde ou de compilation incrémentale.

Les systèmes de fichiers et les programmes n’utilisent pas tous les dates de la même façon. Une copie, une synchronisation ou une archive peut préserver certains horodatages et en recalculer d’autres. Le temps enregistré peut aussi être affiché selon le fuseau horaire local, alors que les données sous-jacentes suivent une représentation différente. Si un décalage apparaît, comparez les sorties de stat sur les deux fichiers et vérifiez les options de l’outil qui les a copiés.

Enfin, atime peut être soumis à des règles d’optimisation du système de fichiers. Cela concerne surtout l’enregistrement automatique des lectures. Une commande touch explicite demande une mise à jour, mais les politiques du système et les permissions restent déterminantes. Dans un diagnostic, mtime est souvent le repère le plus directement associé à une modification de contenu, tandis que ctime donne un indice sur une évolution des métadonnées.

Éviter les erreurs avec les options de touch et les scripts

Dans un script, une faute de chemin peut créer un fichier parasite ou actualiser le mauvais élément. L’option -c, également appelée –no-create dans GNU Coreutils, empêche touch de créer un fichier absent. Par exemple, touch -c resultat.log laisse resultat.log inexistant s’il ne se trouve pas déjà à cet emplacement. Cette option est adaptée à un script qui doit agir seulement sur des fichiers préexistants.

Elle ne remplace pas une validation du chemin. Si un fichier homonyme existe dans le répertoire courant alors que le script devait viser un autre dossier, touch -c peut tout de même actualiser ce mauvais fichier. Indiquez des chemins explicites et vérifiez le répertoire de travail avant une opération en lot. Dans Bash, pwd affiche le dossier courant et ls aide à contrôler les noms présents.

Construire une commande automatisée lisible

Une convention de nommage peut intégrer la date au nom du fichier avec la substitution de commande du shell. Par exemple, touch « rapport_$(date +%Y%m%d_%H%M).txt » crée un nom comportant l’année, le mois, le jour, l’heure et les minutes selon le format demandé à date. Cette commande dépend de l’expansion du shell : elle n’est pas une option propre à touch. Les guillemets préservent le nom si la valeur produite contient des caractères spéciaux ou des espaces.

Avant de l’ajouter à une tâche planifiée, testez la commande manuellement et vérifiez le répertoire cible. La date utilisée dans le nom et l’horodatage du fichier sont deux choses distinctes : la première fait partie du texte du nom, la seconde est enregistrée par le système de fichiers. Un décalage de fuseau ou une exécution à une autre heure peut donc produire un nom et une date interne qui ne coïncident pas exactement.

Pour des chemins susceptibles de contenir des espaces, placez-les entre guillemets, comme dans touch « dossier de test/entrée.txt ». Sans guillemets, le shell découpe le chemin en plusieurs arguments. Dans un script, les variables doivent également être citées, par exemple touch — « $chemin ». Le séparateur — indique aux utilitaires GNU que les arguments suivants ne sont plus des options, ce qui protège notamment les noms commençant par un tiret.

Une procédure sûre peut suivre trois contrôles : afficher le chemin visé, exécuter touch, puis confirmer le résultat avec stat ou ls. Pour un traitement par lot, testez d’abord la commande sur un dossier temporaire contenant quelques fichiers représentatifs. Cette étape révèle les erreurs d’expansion d’accolades, de guillemets ou de répertoire avant qu’elles touchent des données de travail.

Les scripts qui s’exécutent sous un autre compte peuvent aussi rencontrer des permissions différentes de celles du terminal interactif. Un fichier créé manuellement peut fonctionner tandis que la tâche planifiée échoue, car son utilisateur n’a pas le droit d’écriture dans le dossier. Vérifiez l’identité d’exécution et les droits du répertoire plutôt que d’ajouter automatiquement sudo. L’accès administratif doit rester limité aux opérations qui le nécessitent réellement.

La gestion des fichiers comprend aussi des tâches distinctes de touch. Cette commande ne change pas les permissions, ne modifie pas le propriétaire, ne renomme pas le fichier et ne crée pas son contenu. Les commandes adaptées à ces actions ont des effets différents. Avant une intervention sur un poste Windows, la procédure pour changer le mot de passe Windows concerne, elle, la gestion du compte, pas les horodatages Linux.

Traiter les liens symboliques et vérifier le résultat

Un lien symbolique est un chemin qui renvoie vers une autre cible. Lorsqu’une commande agit sur un chemin de ce type, il faut distinguer les métadonnées du lien de celles de l’objet pointé. Avec GNU touch, l’option -h permet de viser le lien symbolique lui-même dans les situations où cette prise en charge est disponible. Sans cette précaution, le comportement peut concerner la cible, selon l’option utilisée et l’implémentation.

Avant une modification de date sur un lien, examinez-le avec ls -l lien et vérifiez où il pointe. Pour comparer les informations, stat peut fournir les détails du chemin, tandis que les options propres à GNU permettent de demander les informations du lien lui-même. Les options diffèrent selon les systèmes : si un script doit fonctionner sur plusieurs distributions ou Unix, consultez le manuel installé avec man touch et testez sur un lien temporaire.

Vérifier les résultats et diagnostiquer un échec

La commande stat chemin est la vérification la plus explicite pour distinguer date d’accès, date de modification et date de changement. ls -l présente surtout mtime dans son affichage courant, ce qui suffit pour une vérification rapide mais pas toujours pour un diagnostic complet. Si les dates n’évoluent pas comme prévu, comparez la sortie de stat avant et après l’opération.

Une erreur « No such file or directory » indique souvent que le répertoire parent n’existe pas, ou que le chemin est mal orthographié. « Permission denied » signale que les droits ne permettent pas l’action demandée. Si l’option -c a été ajoutée, l’absence de création est attendue lorsque le fichier n’existe pas. Reprenez alors la commande sans cette option uniquement si la création est bien souhaitée.

Les caractères spéciaux du shell sont une autre cause fréquente de confusion. Un astérisque peut développer une liste de noms avant que touch ne soit lancé, et les accolades peuvent dépendre de l’interpréteur. Pour voir les arguments produits, affichez d’abord la commande prévue dans un contexte de test ou remplacez temporairement touch par une commande qui ne modifie rien. Cette vérification est particulièrement utile avant de viser plusieurs fichiers dans un dossier partagé.

Les données sensibles ne sont pas concernées directement par les horodatages, mais une commande exécutée dans le mauvais répertoire peut perturber un processus de sauvegarde ou de déploiement. Travaillez avec un compte utilisateur adapté et évitez de modifier des fichiers système sans nécessité. Si vous administrez aussi un poste Windows, gardez séparées les opérations sur les comptes et celles sur les fichiers Linux : la gestion du mot de passe d’un compte Windows ne remplace pas les contrôles de permissions du shell.

Les manuels GNU Coreutils et la page locale man touch restent les références à consulter pour confirmer la disponibilité d’une option sur le système installé. La documentation GNU décrit en particulier les variantes de touch fournies avec Coreutils. Un résultat fiable repose sur trois éléments concrets : le bon chemin, les droits nécessaires et la vérification des horodatages après l’exécution.

Questions fréquentes sur la commande touch

Comment créer un fichier vide sous Linux avec touch ?

Dans le terminal, exécutez touch nom_du_fichier. Si le fichier n’existe pas et que le répertoire est accessible en écriture, touch le crée sans ouvrir d’éditeur.

La commande touch efface-t-elle le contenu d’un fichier ?

Non. Sur un fichier existant, touch actualise normalement ses dates d’accès et de modification, mais conserve son contenu.

Comment modifier uniquement la date de modification avec touch ?

Utilisez touch -m nom_du_fichier. Vérifiez ensuite la date obtenue avec stat nom_du_fichier.

Comment empêcher touch de créer un fichier absent ?

Ajoutez l’option -c, par exemple touch -c resultat.log. La commande ne crée alors pas le fichier s’il n’existe pas.

Fabien Fabre
Fabien Fabre

Fabien Fabre est le nom de plume de la rédaction de Bureau & Terminal. Ses tutoriels rassemblent des procédures documentées sur Windows et Linux, pour exécuter une commande, administrer un poste ou résoudre une panne courante.

Articles: 0

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *