编写linux脚本以将早于1.1.1970的时间戳转换为2.2.1970
我无法将我的文件与Owncloud同步,因为有些时间戳早于1.1.1970(Unix开始时间约定) 有人知道如何编写脚本来查找时间戳早于1.1.1970的所有文件,并将其转换为1970年1月1日之后的任何日期,可能是1980年1月1日 谢谢 最好的您可以试试这个(在GNU/Linux系统上测试) 这是一个与POSIX.1兼容的版本:编写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
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" {} \;