Из man touch
(на снежном барсе):
Change the modification time of the file. The access time of the file is not changed unless the -a flag is also specified.
Что еще более важно, это прекрасно работает для меня:
betelgeuse:tmp james$ touch test betelgeuse:tmp james$ touch -m -t 200801010000 test2 betelgeuse:tmp james$ touch -a -t 200801010000 test3 betelgeuse:tmp james$ ls -lu test* -rw-r--r-- 1 james wheel 0 31 Dec 07:41 test -rw-r--r-- 1 james wheel 0 31 Dec 07:41 test2 -rw-r--r-- 1 james wheel 0 1 Jan 2008 test3 betelgeuse:tmp james$ ls -l test* -rw-r--r-- 1 james wheel 0 31 Dec 07:41 test -rw-r--r-- 1 james wheel 0 1 Jan 2008 test2 -rw-r--r-- 1 james wheel 0 31 Dec 07:41 test3 betelgeuse:tmp james$
С другой стороны, когда я пытаюсь сделать то же самое в ~, я получаю те же результаты, что и вы:
betelgeuse:~ james$ touch test betelgeuse:~ james$ touch -m -t 200801010000 test2 betelgeuse:~ james$ touch -a -t 200801010000 test3 betelgeuse:~ james$ ls -lu test* -rw-r--r-- 1 james staff 0 31 Dec 07:42 test -rw-r--r-- 1 james staff 0 31 Dec 07:42 test2 -rw-r--r-- 1 james staff 0 31 Dec 07:42 test3
Различия? Прожектор не индексирует / tmp, но он индексирует ~. Я почти уверен, что то, что вы видите здесь, - это чтение файла, чтобы проиндексировать его после того, как вы изменили atime, который затем возвращает atime обратно.
Решение очень просто: просто добавьте каталоги, которые вы не хотите индексировать, в список папок Spotlight, которые не следует индексировать.
Просто чтобы подтвердить, что это так, я сделал новый каталог под названием «nospotlight» и велел Spotlight не индексировать его.
betelgeuse:nospotlight james$ ls -l * -rw-r--r-- 1 james staff 0 31 Dec 07:47 test -rw-r--r-- 1 james staff 0 1 Jan 2008 test2 -rw-r--r-- 1 james staff 0 31 Dec 07:47 test3 betelgeuse:nospotlight james$ ls -lu * -rw-r--r-- 1 james staff 0 31 Dec 07:47 test -rw-r--r-- 1 james staff 0 31 Dec 07:47 test2 -rw-r--r-- 1 james staff 0 1 Jan 2008 test3
Дайте Spotlight разрешение на его индексирование, и через несколько секунд:
betelgeuse:nospotlight james$ ls -lu * -rw-r--r-- 1 james staff 0 31 Dec 07:48 test -rw-r--r-- 1 james staff 0 31 Dec 07:48 test2 -rw-r--r-- 1 james staff 0 31 Dec 07:48 test3
и еще раз, изменение mtime приводит к обновлению atime.
Это определенно Прожектор.