Binary 我想在大型二进制文件上更新atime

Binary 我想在大型二进制文件上更新atime,binary,solaris,Binary,Solaris,在大型二进制文件列表中,我希望将atime更新为当前时间,但不影响ctime或mtime。(这将是一个持续的日常过程) 更新atime,但它也更新我不想要的ctime head -1 foo > /dev/null 工作正常,但由于文件不按“行”划分,因此需要相对较长的时间 以下内容实现了我的目标,即使在400 MB的文件上也能很快工作,但我不确定这是否是实现这一目标的最佳方法。欢迎任何反馈 od foo | head -1 >/dev/null 谢谢, JimRtouch-a

在大型二进制文件列表中,我希望将atime更新为当前时间,但不影响ctime或mtime。(这将是一个持续的日常过程)

更新atime,但它也更新我不想要的ctime

head -1 foo > /dev/null 
工作正常,但由于文件不按“行”划分,因此需要相对较长的时间

以下内容实现了我的目标,即使在400 MB的文件上也能很快工作,但我不确定这是否是实现这一目标的最佳方法。欢迎任何反馈

od foo | head -1 >/dev/null
谢谢, JimR

touch-at
应该可以工作(在我的ext4驱动器上工作)-不确定为什么要同时更改ctime。

除了在注释中提到之外,还可以读取单个字节:

od -c -N 1 foo >/dev/null

消除额外的
会使它更快一些。

如果您在gnu
上,则
头-c1
将只读取文件的第一个字节。。。这应该是非常即时的尝试
dd bs=1 count=1/dev/null
POSIX没有指定在运行
touch-a
命令后是否应该修改
ctime
,这样实现就可以自由地进行修改。Solaris 10区分读取文件(仅更新
atime
)和触摸文件
atime
,后者也会更新
mtime
。在Solaris 11下不再是这种情况,在这两种情况下,只有
atime
受到影响。
touch -at <time> <file>
od -c -N 1 foo >/dev/null