Por que o ponto nos comandos find?
Normalmente, vemos findcomandos que se parecem com isso:
quando a pesquisa começar no diretório atual. Estou descobrindo que nas minhas máquinas (Ubuntu, Cygwin) eu obtenho os mesmos resultados sem o ponto.
Por que normalmente está incluído? É apenas uma convenção a ser explícita ou foi / é exigida em certos sistemas?
Algumas versões * do findexigem que você forneça um argumento de caminho, que é um diretório a partir do qual iniciar a pesquisa. O ponto .simplesmente representa o diretório atual onde geralmente você deseja pesquisar.
Você pode substituir isso por qualquer caminho que você queira que seja a base da pesquisa. Em algumas versões do find, isso pode ser deixado porque o diretório atual está implícito se nenhum argumento de caminho estiver presente.
Você pode executar man findno seu shell para obter detalhes sobre os argumentos. Por exemplo, a sinopse de uso da minha indica que o argumento do caminho é opcional (entre colchetes []):
Se você executasse o meu findsem argumentos em todos os arquivos e diretórios iniciados na pasta atual, seria retornado. Seu exemplo simplesmente declara expressamente que a pesquisa deve começar .e inclui a expressão -name foo.txtcomo um dos filtros de pesquisa.
* Notavelmente todas as variantes do BSD e qualquer coisa que atenha estritamente ao padrão POSIX . A localização do GNU permite que seja opcional.
Você sabe de imediato quais versões do find exigem isso? Ou onde eu poderia procurar investigar mais? (descoberta é difícil google)
Coisa interessante sobre o caminho de pesquisa padrão.
Acredito que a maioria das variantes de localização do BSD exigem um argumento de caminho, enquanto no GNU o consideram opcional. Podem existir variações.
Observe que, pelo menos nas especificações padrão do POSIX de 2008, pathé um argumento necessário para encontrar .
Nit pick: "Você pode substituir este [o ponto] por qualquer caminho que você quiser" → "qualquer caminho que você quiser", como você pode dizer find dir1 dir2 dir3 -name foo.txt.