Sintaxe para encontrar no Mac OS X

6

Eu tenho um diretório de projeto que contém código-fonte e subdiretórios do código-fonte. Eu quero usar o programa Unix find para pesquisar recursivamente os nomes de arquivos de certas extensões. As versões de find no Linux e Mac OS X se comportam de maneira diferente.

# Works in Linux
find . -type f -regex ".*\.\(py\|html\)$"

# Neither of these works in Mac OS X
find . -type f -regex ".*\.\(py\|html\)$"
find . -type f -regex ".*\.(py|html)$"

Como escrevo este comando para que ele seja executado no Mac OS X (e também no Linux)?

    
por hekevintran 10.03.2010 / 09:20

2 respostas

9

O Mac OS X usa o BSD localizar e a maioria das distribuições Linux vem com o GNU find . Eu acredito que você pode instalar o GNU findutils no Mac OS X. Eu não tenho um Mac acessível, mas tenho certeza que estava disponível em MacPorts .

Olhando para a página do manual do BSD find, eu poderia fazer uma suposição e sugerir que você tentasse olhar para a opção -E para ativar a biblioteca moderna de expressão regular.

    
por 10.03.2010 / 09:29
4

O seguinte trabalho com o BSD encontra no OS X.

find -E . -type f -regex ".*\.(py|html)$"

find . -type f | grep -e ".*\.\(py\|html\)$"
    
por 05.04.2010 / 13:08