Por que o ponto nos comandos find?

13

Normalmente, você vê os comandos find que se parecem com isso:

$ find . -name foo.txt

quando a pesquisa começar no diretório atual. Eu estou achando que nas minhas máquinas (Ubuntu, Cygwin) eu recebo os mesmos resultados sem o ponto.

Por que isso é tipicamente incluído? É apenas uma convenção ser explícita, ou foi / é requerida em certos sistemas?

    
por Eric Wilson 05.08.2011 / 14:55

2 respostas

25

Algumas versões * de find requerem que você forneça um argumento de caminho que é um diretório a partir do qual iniciar a pesquisa. Dot . simplesmente representa o diretório atual é geralmente onde você deseja pesquisar.

Você pode substituir isso por qualquer caminho que deseje ser 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 find em seu shell para detalhes sobre os argumentos. Por exemplo, a sinopse de uso do meu indica que o argumento do caminho é opcional (dentro do colchete quadrado [] ):

   find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

Se você executou meu find sem nenhum argumento, todos os arquivos e diretórios a partir da pasta atual seriam retornados. Seu exemplo simplesmente declara expressamente que a pesquisa deve começar em . e incluir a expressão -name foo.txt como um dos filtros de pesquisa.

* Notavelmente todos os variantes do BSD e qualquer coisa que se atenha estritamente ao padrão POSIX . A descoberta do GNU permite que seja opcional.

    
por 05.08.2011 / 15:02
5

A versão do AIX do find, por exemplo, requer o caminho e não será executada se não for fornecida.

# oslevel -s
5300-08-03-0831
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]

# oslevel -s
6100-03-01-0921
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]

Embora algumas máquinas AIX possam ter um GNU find instalado, o qual pode lidar sem o caminho,

# oslevel -s
6100-03-01-0921
# /opt/freeware/bin/find -version
GNU find version 4.1
    
por 05.08.2011 / 15:19

Tags