减去4:00小时即可更改文件创建日期

时间:2019-04-04 03:12:49

标签: linux shell

我在c:/users/text.txt中有一个文件 text.tx没有文件创建日期,如何获取text.txt创建日期并使用Shell脚本减去-4:00

last_update=$(stat -c "%n %y" $file)

这句话给了我文件创建的日期。我如何从中减去-4:00?

假设假设text.txt文件是在04/04/2019 4:00创建的,我想将其更改为04/04/2019 12:00

1 个答案:

答案 0 :(得分:2)

%y不是创建的,而是最后的修改日期。

获取自大纪元以来的秒数,并减去4小时,然后使用date将其转换为可读格式,使用touch来更改文件的访问和修改时间:

$ stat file
  File: file
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: b31ch/45852d    Inode: 65386       Links: 1
Access: (0600/-rw-------)  Uid: (10138/ u0_a138)   Gid: (10138/ u0_a138)
Access: 2019-04-04 12:34:56.172954982 +0300
Modify: 2019-04-04 12:34:56.172954982 +0300
Change: 2019-04-04 12:34:56.172954982 +0300
 Birth: -
$
$ stat -c '%y' file
2019-04-04 12:34:56.172954982 +0300
$ stat -c '%Y' file
1554370496
$ date -d @$(( $(stat -c '%Y' file) - 4*60*60 ))
Thu Apr  4 08:34:56 +03 2019
$ touch -d "$( date -d @$(( $(stat -c '%Y' file) - 4*60*60 )) )" file
$
$ stat file
  File: file
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: b31ch/45852d    Inode: 65386       Links: 1
Access: (0600/-rw-------)  Uid: (10138/ u0_a138)   Gid: (10138/ u0_a138)
Access: 2019-04-04 08:34:56.000000000 +0300
Modify: 2019-04-04 08:34:56.000000000 +0300
Change: 2019-04-04 12:37:14.492954929 +0300
 Birth: -

有关更多信息,请参见stat(1)date(1)touch(1)