Por que find às vezes find . e às vezes não?

Por que find às vezes find . e às vezes não?
find -name "?"
find ~ -name "?"

Por que um desses comandos encontra .e o outro não? Como posso fazer com que a segunda versão, com um caminho explícito, encontre a .entrada junto com qualquer outro arquivo de caractere único no diretório especificado?

find (GNU findutils) 4.5.11caso isso importe...

Responder1

Sem o starting pointfor find, ele usa .(o diretório atual). Na verdade, essas duas linhas produzirão resultados idênticos:

find -name "?"
find . -name "?"

Para poder especificar um ponto de partidaeencontre findo .diretório e adicione /.ao seu ponto de partida, ou seja:

find ~/. -name "?"

Editar: Agora, para saber por que, vamos comparar esses dois comandos:

find ~/. -name "?"
find ~ -name "?"

Existem duas diferenças em sua produção. Primeiro, o comando with /.produz resultados com um extra /.em cada linha, como seria de esperar. Em segundo lugar, e esta era a questão raiz do OP, é que o /.comando encontra o ~/.próprio pseudodiretório, mas o ~comando não. Isso ocorre porque a ~/.pesquisa pede explicitamente para .ser pesquisada. A menos que esteja listado na findlinha de comando, findignora os pseudodiretórios .e . ..(Você pode imaginar se não acontecesse?)

Consulte man findpara obter mais informações.

informação relacionada