5

У меня есть немного кода, который я использую, чтобы получить сумму MD5 последнего измененного времени файла

find ./media -type f -printf "%TY-%Tm-%Td %TT %p \n" | sort | more | tail -1 | md5 -r | awk '{print $1}'

Я использую его для генерации уникальных ключей для моих файлов CDN, логика заключается в том, что если файл изменяет ключ, то изменения изменяются, поэтому файлы не кэшируются и перезагружаются.

Во всяком случае, когда я пытаюсь запустить это на своем Mac, я получаю ошибку «-printf unknown option»
Я просмотрел справочную страницу, но не смог найти ничего похожего, как мне заставить это работать?

2 ответа2

15

printf специфичен для GNU find и по умолчанию недоступен в OS X find .

Установите findutils на ваш Mac, например, используя Homebrew, используя следующую команду:

brew install findutils

В качестве альтернативы вы можете использовать Macports или Fink, вероятно, они также имеют этот пакет.

Чтобы фактически использовать gnu find, вам нужно использовать gfind так как find будет по-прежнему ссылаться на OSX find расположенный в /usr/bin/find .

Homebrew поставляется с краном для случаев, когда системные команды дублируются командами, установленными через homebrew.
Просто выполните brew tap homebrew/dupes , а затем для примера выше brew install findutils .
Теперь вы сможете использовать команду поиска для homebrews без необходимости явного вызова через gfind .

0

Вместо этого вы могли бы использовать флаг -ls чтобы получить ту же информацию (а затем и некоторую), которая может работать так же хорошо для ваших целей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .