Fecha de última modificación del directorio

80

Me pregunto cuándo se cambiará la fecha de última modificación del directorio. Modifiqué un archivo dentro de un directorio en particular (a través de FTP), pero el LMD del directorio no cambió. ¿Cómo se supone que funcione?

Alec inteligente
fuente

Respuestas:

126

El mtime (tiempo de modificación) en el directorio en sí cambia cuando se agrega, elimina o cambia el nombre de un archivo o subdirectorio.

La modificación del contenido de un archivo dentro del directorio no cambia el directorio en sí, ni la actualización de las horas de modificación de un archivo o subdirectorio. Si cambia los permisos en el directorio, ctime cambia pero mtime no.

Jonathan Leffler
fuente
2
¿Se modifica cuando se modifica un subdirectorio?
Flimm
6
@Flimm: depende de la naturaleza de la modificación del subdirectorio. Si se agrega o elimina un archivo del subdirectorio, entonces no. Si se cambia el nombre del subdirectorio, entonces sí (porque el nuevo nombre se almacena en el directorio que contiene el subdirectorio, entonces lo que 'realmente' cambia es la entrada en el directorio principal, y nada cambia en el subdirectorio).
Jonathan Leffler
7
@Asmageddon: si algo se modifica varios niveles de profundidad, no hay forma de saberlo desde el momento de modificación del directorio varios niveles hacia arriba. Piense en lo que eso implicaría: en última instancia, el directorio raíz tendría que modificarse cada vez que se modificara un archivo en cualquier lugar, lo que haría que su inodo en memoria sea un punto de acceso para cada proceso que alguna vez haga algo con cualquier archivo.
Jonathan Leffler
5
@ cram2208: ¿Gedit crea un archivo de respaldo dentro del directorio, o un archivo de bloqueo, o algo así? ¿Qué pasa si usas en touch somefilelugar de gedit?
Jonathan Leffler
3
@JonathanLeffler Buenas ideas, debo decir, ahora entiendo completamente lo que estaba pasando. Era un archivo de respaldo en el directorio y no la modificación del archivo en sí mismo. Al usar el toque en el archivo, en realidad cambió el LMD del archivo pero no del directorio. Hay que tener más cuidado con ese tipo de detalles ...
cram2208
28

Un directorio es como un archivo que contiene una lista de los nombres de archivo en él (de hecho, es posible que haya abierto accidentalmente un directorio en un editor, donde puede ver que es una lista en su mayoría legible de su contenido), por lo que se modifica cuando se agrega, elimina o cambia el nombre de un archivo en ese directorio.

Éter
fuente
1
¿Se modifica cuando se modifica un subdirectorio?
Flimm
1
@Flimm Parece que solo actualiza el mtime del directorio que lo contiene, de lo contrario, subiría a la raíz.
Nick Weaver
1
Por interés, ¿qué editores le permiten abrir un directorio directamente? La mayoría (incluso edy cat) parecen quejarse u ofrecer una lista de archivos para abrir.
naught101
@ naught101 vim abrirá un directorio con mucho gusto.
Éter
5
@Ether: No "abre un directorio" como en la lectura de los datos del inodo del directorio (o cualquier equivalente en otros sistemas de archivos). Simplemente proporciona un explorador de archivos para ese directorio.
naught101