find -printf no Mac (opção -printf desconhecido)

4

Eu tenho um pouco de código que eu uso para obter uma soma MD5 do tempo de arquivo modificado mais recentemente

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

Eu o uso para gerar chaves exclusivas para meus arquivos CDN, a lógica por trás disso é se um arquivo altera as alterações de chave para que os arquivos sejam não armazenados em cache e recarregados.

De qualquer forma, quando tento executar isso no meu Mac, recebo o erro '-printf unknown option'
Eu olhei pela página man, mas não consegui encontrar nada semelhante, como faço para que isso funcione?

    
por Smudge 05.06.2011 / 18:34

2 respostas

14

printf é específico do GNU find e não está disponível no find do OS X por padrão.

Instale findutils no seu Mac, por exemplo usando Homebrew usando o seguinte comando:

brew install findutils

Você pode alternativamente usar Macports ou Fink, eles provavelmente também têm esse pacote disponível.

Para realmente usar o gnu find, você precisará usar gfind , pois find ainda estará vinculado ao find do OSX, localizado em /usr/bin/find .

O Homebrew vem com um toque para casos em que os comandos do sistema são duplicados pelos comandos instalados via homebrew.
Basta fazer brew tap homebrew/dupes e, em seguida, acima do exemplo brew install findutils .
Agora você deve ser capaz de usar o comando de busca de homebrews sem ter que chamá-lo explicitamente via gfind .

    
por 05.06.2011 / 18:37
0

Você pode usar o -ls flag para obter as mesmas informações (e algumas outras), que podem funcionar tão bem para seus objetivos.

    
por 07.06.2011 / 00:23

Tags