编写linux脚本以将早于1.1.1970的时间戳转换为2.2.1970

编写linux脚本以将早于1.1.1970的时间戳转换为2.2.1970,linux,shell,date,timestamp,Linux,Shell,Date,Timestamp,我无法将我的文件与Owncloud同步,因为有些时间戳早于1.1.1970(Unix开始时间约定) 有人知道如何编写脚本来查找时间戳早于1.1.1970的所有文件,并将其转换为1970年1月1日之后的任何日期,可能是1980年1月1日 谢谢 最好的您可以试试这个(在GNU/Linux系统上测试) 这是一个与POSIX.1兼容的版本: touch -d "1970-01-01 00:00:00" /tmp/timestamp find / ! -newer /tmp/timestamp -exec

我无法将我的文件与Owncloud同步,因为有些时间戳早于1.1.1970(Unix开始时间约定)

有人知道如何编写脚本来查找时间戳早于1.1.1970的所有文件,并将其转换为1970年1月1日之后的任何日期,可能是1980年1月1日

谢谢

最好的

您可以试试这个(在GNU/Linux系统上测试)

这是一个与POSIX.1兼容的版本:

touch -d "1970-01-01 00:00:00" /tmp/timestamp
find / ! -newer /tmp/timestamp -exec touch {} \;

请参阅和。

要触摸这些文件上的时间戳,请使用下面的。然后尝试运行RSYNC

touch -t "198001011000" *.*
根据OP的要求进行修订

find <dir> -not -newermt 1970-01-01 -exec touch -t '198001011000' {} \;
find-not-newermt 1970-01-01-exec touch-t'198001011000'{};
或者干脆

find <dir> -not -newermt 1970-01-01 -exec touch {} \;
find-not-newermt 1970-01-01-exec touch{};

我发现,在您要更正日期的文件夹中启动时,以下功能可以正常工作。它将自动在所有最终子文件夹中工作:

find . *.*  -not -newermt 1970-01-01 -exec touch -t "198001011000" {} \;

最好的

您是否尝试过
touch-t“198001011000”*.*.
谢谢将时间戳更改为新的似乎很好。但是我不能更改所有文件的时间戳。您可以使用“查找”命令搜索特定日期之前的所有文件,并使用xargs或exec工具应用此触摸。我有两个命令可以使用:Quote:find-非-newermt 1970-01-01和引用:触摸-t“198001011000”。但我不知道如何链接它们,所以第一个的输出会转到第二个。我试过:引用:查找-不是-newermt 1970-01-01 | xargs touch-t“198001011000”,但我得到每个文件的一个错误:文件或目录不存在谢谢。它回复Touch:non-valid选项--“n”@user3428634“n”来自哪里?无论如何,请参阅您的
触摸(1)
,了解如何创建具有特定修改时间的文件。+1,请注意,尽管它没有指定
-不是
,因此您将希望使用
将表达式取反(例如
!-cnewer…
)。
find . *.*  -not -newermt 1970-01-01 -exec touch -t "198001011000" {} \;