Unix, comando find e falso negativo

1

Realizando uma pesquisa a partir do diretório atual onde este arquivo reside, este comando find localiza o arquivo.

# find . page.tpl.php

No entanto, quando eu procuro de um diretório filho, este comando,

# find ../. page.tpl.php

imprime a lista de arquivos, COM o arquivo solicitado listado na saída,

.././parent_dir/page.tpl.php

No entanto, os resultados são

find: 'page.tpl.php': No such file or directory

Então, quando eu adiciono o argumento -name, funciona

# find ../. -name page.tpl.php

Eu simplesmente esqueço de usar argumentos algumas vezes e o falso negativo é realmente agravante. O que está acontecendo?

    
por xtian 16.06.2011 / 19:49

2 respostas

1

find [path] [expressions]

Um nome de arquivo não é uma expressão.

A ação padrão é imprimir.

Para o caminho, ".." é melhor que "../." você quase nunca precisa incluir "." a menos que esteja no início de um caminho relativo.

    
por 16.06.2011 / 19:58
0

O comando localiza usos:
encontrar [-H] [-L] [-P] [caminho ...] [expressão]

Seu primeiro exemplo foi:
find ../. page.tpl.php

O que você fez foi encontrar dois caminhos de pesquisa. Como a expressão padrão é print, o conteúdo dos dois caminhos foi impresso para stdout.

Considere isso:

mkdir a b c 
touch  a/file1 a/file2 b/SANTACLAUS c/MONKEYS
find a b

$ find a b
a
a/file2
a/file1
b
b/SANTACLAUS

Seu segundo exemplo foi:
.././parent_dir/page.tpl.php

Aqui você forneceu um caminho de pesquisa. O erro informa que page.tpl.php não foi encontrado no CWD. Eu suponho que isso foi devido a sua não ter o arquivo 'page.tpl.php' no diretório 'parent_dir'.

    
por 16.06.2011 / 19:58