Linux / Commande / touch / Création de fichiers vides et modification de la date de dernière modification

Sous Linux, touch crée un fichier vide s'il n'existe pas, et si le fichier existe, il met à jour par défaut les heures d'accès et de modification à l'heure actuelle. Il n'efface pas le contenu des fichiers existants, mais il peut affecter les sauvegardes ou les opérations de compilation qui dépendent des informations temporelles.

Création de fichiers vides

La commande suivante crée un fichier vide dans le répertoire courant si example.txt n'existe pas. Les exemples suivants sont basés sur touch et stat de GNU coreutils. Exécutez-les dans un répertoire de pratique vide séparé pour éviter d'affecter les données existantes.

touch example.txt
ls -l example.txt

Un fichier de taille 0 apparaîtra dans la liste. Si un fichier portant le même nom existe déjà, il ne sera pas remplacé par un nouveau fichier vide, mais l'heure du fichier existant sera mise à jour. Si le nom contient des espaces, mettez-le entre guillemets comme touch "my notes.txt". Si plusieurs noms sont listés séparés par des espaces, chacun sera traité.

Vérification et mise à jour de l'heure d'un fichier existant

Le temps d'accès (atime) d'un fichier se rapporte au dernier accès, et le temps de modification (mtime) se rapporte à la dernière modification du contenu du fichier. Par défaut, touch example.txt définit les deux temps à l'heure actuelle. Vous pouvez vérifier avant et après la modification comme suit.

stat example.txt
touch example.txt
stat example.txt

Comparez les entrées Access et Modify dans la sortie de stat. La langue réelle de sortie et le format d'affichage peuvent varier selon l'environnement, et les différences à des intervalles très courts peuvent ne pas être visibles en raison de la résolution temporelle du système de fichiers.

Le temps de changement de statut (ctime) est lié aux modifications des métadonnées telles que les permissions et n'est pas le même que le temps de création. Modifier les informations de temps avec touch peut également mettre à jour le ctime, mais vous ne pouvez pas définir le ctime sur une valeur arbitraire ou changer le temps de création. Le fait que le temps d'accès soit mis à jour à chaque lecture dépend également du système de fichiers et des paramètres de montage. Vous pouvez vérifier la signification de chaque temps dans description du temps des fichiers GNU.

Changer uniquement le temps d'accès ou le temps de modification

-a sélectionne uniquement le temps d'accès, et -m sélectionne uniquement le temps de modification. Ci-dessous un exemple de modification du temps de modification d'un fichier de pratique à l'heure actuelle et de vérification du résultat.

touch -m example.txt
stat example.txt

-a sélectionne l'heure d'accès, tandis que -m sélectionne l'heure de modification. Cela ne signifie pas que l'heure de modification du statut du fichier sera conservée. Si le fichier n'existe pas, un fichier vide est créé à moins qu'une option distincte ne soit spécifiée.

Utilisez une heure souhaitée ou l'heure d'un autre fichier

Vous pouvez spécifier la date et l'heure avec GNU touch -d. L'exemple ci-dessous définit les heures d'accès et de modification du fichier de pratique à l'heure spécifiée.

touch -d '2024-01-15 10:30:00' example.txt
stat example.txt

Si le fuseau horaire n'est pas spécifié séparément, il sera interprété selon la variable d'environnement TZ ou le fuseau horaire du système. Vérifiez que les heures d'accès et de modification de sortie correspondent aux valeurs spécifiées. Les valeurs enregistrées peuvent varier en fonction de la plage et de la résolution prises en charge par le système de fichiers.

Pour utiliser un autre fichier comme référence, utilisez -r. Voici un exemple lorsque reference.txt et example.txt existent dans le répertoire courant.

touch -r reference.txt example.txt
stat reference.txt example.txt

Définissez les heures d'accès et de modification du fichier cible sur les valeurs du fichier de référence. Si le fichier de référence n'existe pas, une erreur se produit, et par défaut, un fichier vide peut être créé si le fichier cible n'existe pas. Pour des options détaillées, référez-vous au manuel GNU touch.

Mettre à jour uniquement l'heure sans créer de fichier

-c ne crée pas de nouveau fichier si le fichier spécifié n'existe pas. La commande suivante met à jour l'heure à l'heure actuelle si le fichier existe déjà, et ne le crée pas s'il n'existe pas.

touch -c example.txt

Comme elle peut se terminer sans erreur même lorsque le fichier n'existe pas, n'utilisez pas uniquement le statut de succès de cette commande pour vérifier l'existence du fichier. Pour créer un nouveau fichier, des droits d'écriture sur le répertoire parent sont nécessaires, et le droit de changer l'heure d'un fichier existant dépend du propriétaire et de l'heure que vous souhaitez définir. En cas d'erreur, vérifiez le chemin et les permissions.