Modificare il time di un file

Per ciascun file sono disponibili 3 date:

[root@zion ~]# stat example.txt
  File: `example.txt'
  Size: 1900            Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d      Inode: 265123      Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/  andrea)   Gid: (   50/  users)
Access: 2008-03-28 23:22:00.000000000 -0500
Modify: 2008-02-28 23:22:00.000000000 -0500
Change: 2008-01-08 02:41:17.000000000 -0500

Con il comando touch è possibile impostare l'access ed il modify ma ovviamente non il timestamp di modifica dell'i-node:

[root@zion ~]# touch -t 200808282322 example.txt
[root@zion ~]# stat example.txt
  File: `example.txt'
  Size: 1900            Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d      Inode: 265123      Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/  andrea)   Gid: (   50/  users)
Access: 2008-08-28 23:22:00.000000000 -0500
Modify: 2008-08-28 23:22:00.000000000 -0500
Change: 2008-01-08 02:41:17.000000000 -0500

Per fare una cosa del genere si può utilizzare uno script perl, che ad esempio imposta la data e l'ora di una serie di file alla data ed ora del primo:

[root@zion ~]# perl -e '$x=utime ((stat($ARGV[0]))[8,9], @ARGV);print $x' file-0.txt file-[12345].txt
Last modified: 2008/09/09 07:23