Commande de répertoire tactile Linux

9

Qu'est-ce que la commande «touche» lorsqu'elle est appliquée à un répertoire?

$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
Dragos Rizescu
la source

Réponses:

8

Comme indiqué dans la page de manuel , l'utilisation principale de touchest la suivante:

Mettez à jour les heures d'accès et de modification de chaque FICHIER à l'heure actuelle.

Il met donc à jour les temps d'accès et de modification du répertoire.

Jorge Suárez de Lis
la source
4

L'exemple en haut ne montre pas clairement que "touch" définit l'heure du répertoire (la nouvelle heure dans la liste était la même que l'original, simplement parce que la touche était si peu de temps après la création du répertoire). . oui, la définition de "FILE" dans la documentation inclut des répertoires, vous pouvez donc utiliser touch pour changer leurs horodatages, MAIS ...

Dans certaines situations, vous ne pouvez pas modifier l'horodatage d'un répertoire (pour certains types de répertoires montés à distance) même si vous avez l'autorisation de faire autre chose. par exemple ce montage NFS:

$ touch -d "2014-07-02 12:15" /public/test.dir    
touch: setting times of ‘/public/test.dir’: Operation not permitted

En outre, vous pouvez rencontrer des problèmes avec certaines anciennes dates non prises en charge sur certains serveurs, par exemple:

$ mkdir  /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Mar 11 17:40 /Acer/kopies/test.dir

Cela marche:

$ touch "2014-04-01 00:00" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Apr  1  2014 /Acer/kopies/test.dir

Cela fonctionnerait sur un répertoire local mais donne une date étrange sous les montures Samba:

$ touch -d "1955-07-02 12:15" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Nov 26  60410 /Acer/kopies/test.dir
                              ~~~~~~~~~~~~~
user235510
la source
2

touchest un programme Unix standard utilisé pour changer les horodatages d'accès et de modification d'un fichier. Il est également utilisé pour créer un nouveau fichier vide.

La spécification Single Unix (SUS) spécifie que le toucher doit changer les temps d'accès, les temps de modification, ou les deux, pour un fichier. Le fichier est identifié par un chemin d'accès fourni comme un seul argument. Il spécifie également que si le fichier identifié n'existe pas, le fichier est créé et les heures d'accès et de modification sont définies comme spécifié. Si aucun nouvel horodatage n'est spécifié, appuyez sur utilise l'heure actuelle.

-Wikipédia

Vous pouvez trouver des informations plus détaillées sur la touchcommande (ou toute autre commande que vous souhaitez connaître) en utilisant la mancommande comme ceci:

man touch

Atari911
la source
2

La raison immédiate de la question est le fait que la résolution de temps par défaut de ls -lest en minutes, donc une entrée de système de fichiers touchée dans la même minute s'affichera exactement la même dans la ls -lsortie par défaut .

La solution à cela est décrite sur /superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp et implique essentiellement l'exécution à la ls -l --time-style=full-isoplace.

Josip Rodin
la source