Supongamos que tengo una manejador de archivos $fh
. Puedo verificar su existencia con -e $fh
o su tamaño de archivo con -s $fh
o a slew of additional information about the file. ¿Cómo puedo obtener su última marca de tiempo modificada?¿Cómo obtengo la última hora de modificación de un archivo en Perl?
Respuesta
Puede usar el módulo integrado File::stat
(incluido en Perl 5.004).
Calling stat($fh)
devuelve una matriz con la siguiente información sobre el identificador de archivo aprobada en (desde el perlfunc man page for stat
):
0 dev device number of filesystem
1 ino inode number
2 mode file mode (type and permissions)
3 nlink number of (hard) links to the file
4 uid numeric user ID of file's owner
5 gid numeric group ID of file's owner
6 rdev the device identifier (special files only)
7 size total size of file, in bytes
8 atime last access time since the epoch
9 mtime last modify time since the epoch
10 ctime inode change time (NOT creation time!) since the epoch
11 blksize preferred block size for file system I/O
12 blocks actual number of blocks allocated
El elemento noveno en esta matriz le dará la última vez modificado desde la época (00:00 1 de enero de 1970 GMT). Desde que se puede determinar la hora local:
my $epoch_timestamp = (stat($fh))[9];
my $timestamp = localtime($epoch_timestamp);
Para evitar la número mágico 9 necesaria en el ejemplo anterior, además, utilizar Time::localtime
, otro módulo integrado (también incluido como Perl de 5.004).Esto requiere un cierto código (posiblemente) más legible:
use File::stat;
use Time::localtime;
my $timestamp = ctime(stat($fh)->mtime);
Utilice la función integrada stat. O más específicamente:
my $modtime = (stat($fh))[9]
Puede usar stat() o el módulo File :: Stat.
perldoc -f stat
Usted necesita la llamada stat, y el nombre del archivo:
my $last_mod_time = (stat ($file))[9];
Perl también tiene una versión diferente:
my $last_mod_time = -M $file;
pero ese valor es relativo a cuando se inicia el programa. Esto es útil para cosas como la clasificación, pero es probable que desee la primera versión.
my @array = stat($filehandle);
El tiempo de modificación se almacena en formato Unix en $ array [9].
o explícitamente:
my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
$atime, $mtime, $ctime, $blksize, $blocks) = stat($filepath);
0 dev Device number of filesystem
1 ino inode number
2 mode File mode (type and permissions)
3 nlink Number of (hard) links to the file
4 uid Numeric user ID of file's owner
5 gid Numeric group ID of file's owner
6 rdev The device identifier (special files only)
7 size Total size of file, in bytes
8 atime Last access time in seconds since the epoch
9 mtime Last modify time in seconds since the epoch
10 ctime inode change time in seconds since the epoch
11 blksize Preferred block size for file system I/O
12 blocks Actual number of blocks allocated
La época era a las 00:00 1 de enero de 1970, hora GMT.
Más información está en stat.
creo que usted está buscando para la función stat (stat perldoc f)
En particular, el campo noveno (10a, índice # 9) de la lista devuelta es la última hora de modificación del archivo en segundos desde la época.
Así:
mi last_modified $ = (stat ($ fh)) [9];
Si acaba de comparar dos archivos para ver cuál es más reciente y luego -C
debería funcionar:
if (-C "file1.txt" > -C "file2.txt") {
{
/* Update */
}
También hay -M
, pero yo don' Creo que es lo que quieres. Afortunadamente, es casi imposible buscar documentación sobre estos operadores de archivos a través de Google.
Para google '-M', agregue las comillas" -M ", ya que' -X' elimina los resultados que tienen 'X' ... Por cierto, '-M' es lo que quiere el OP. –
Sería más natural usar "<" (para probar si "archivo1.txt" es el más nuevo, ya que *** "- C" devuelve la antigüedad del archivo, no la fecha (de creación)) *** . –
Explicación de la diferencia entre -M (modificación de contenido) y -C (cambio de inodo): https://unix.stackexchange.com/questions/132660/whats-the-difference-between-modification-date-and-inodes- fecha de modificación –
En mi sistema FreeBSD, stat
simplemente devuelve un favor.
$VAR1 = bless([
102,
8,
33188,
1,
0,
0,
661,
276,
1372816636,
1372755222,
1372755233,
32768,
8
], 'File::stat');
Hay que extraer mtime
así:
my @ABC = (stat($my_file));
print "-----------$ABC['File::stat'][9] ------------------------\n";
o
print "-----------$ABC[0][9] ------------------------\n";
Este es el hilo muy antiguo, pero trató de usar la solución y no se pudo obtener la información de Archivo :: stat. (Perl 5.10.1)
que tenía que hacer lo siguiente:
my $f_stats = stat($fh);
my $timestamp_mod = localtime($f_stats->mtime);
print "MOD_TIME = $timestamp_mod \n";
sólo pensé que compartir por si alguien más ha tenido el mismo problema.
- 1. ¿Cómo obtengo la última modificación de un recurso de Java?
- 2. Última modificación de un directorio en OSX
- 3. Obtener la última fecha de modificación de un archivo remoto
- 4. ¿Cómo obtengo la hora en que se modificó por última vez un archivo en Python?
- 5. Cómo mostrar la hora de la última modificación de archivos en linux
- 6. ¿Cómo obtengo la fecha de modificación del archivo en C#?
- 7. Conseguir un archivo de fecha de última modificación
- 8. Última modificación de carpetas
- 9. Directorio última fecha de modificación
- 10. ¿Cómo recursivo los archivos de la lista con el tamaño y la última hora de modificación?
- 11. play-marco conseguir la fecha de última modificación de archivo
- 12. ¿cómo puedo establecer la última hora modificada de un archivo de python?
- 13. ¿Cómo obtener la última fecha de modificación del archivo en la línea de comandos de Windows?
- 14. ¿Recibe la última fecha de modificación del archivo de los archivos de datos de la aplicación?
- 15. ¿Cómo obtengo la fecha de modificación correcta de un archivo FAT32, independientemente de la zona horaria en .NET?
- 16. Obtener la última fecha de modificación de un archivo en VB6
- 17. Buscar la fecha de última modificación de un archivo en Cocoa
- 18. ¿Cómo obtengo el nombre dir de un archivo con Perl?
- 19. ¿Cómo puedo comparar la hora de creación del archivo con la hora actual en Perl?
- 20. Obtener la última fecha de modificación de un archivo en C
- 21. ¿Cómo obtener las fechas de creación/última modificación de un archivo en Delphi?
- 22. Obtener archivo Última modificación de tiempo y comparar
- 23. Obtener la fecha de la última modificación de una URL
- 24. Obtener la última hora del archivo en linux
- 25. ¿Cómo obtengo la última línea no vacía de un archivo usando cola en Bash?
- 26. Modificación de un archivo jar
- 27. ¿Es posible recuperar la última fecha de modificación de un archivo utilizando Javascript?
- 28. Buscar registros producidos en la última hora
- 29. Python: obtener la fecha y hora de la última hora
- 30. ¿Cómo obtengo la fecha/hora modificada de un archivo en Python?
¿Se supone que 'localtime' corrige los cambios de zona horaria? Es decir: archivo creado en PST, luego lea 'mtime' desde CET. Estoy obteniendo resultados confusos. –