O comando Find parece não funcionar. Por exemplo, eu estou em um diretório onde existe absolutamente um arquivo chamado index.php e eu executo isso:
[root@server htdocs]# find . -name "index.php"
find: .: No such file or directory
Eu sempre recebo esse erro de arquivo ou diretório.
Independentemente do caminho que eu defino ou do arquivo que procuro, sempre recebo esse erro. Tenho certeza de que estou ignorando algo muito simples. Alguém pode apontar o que estou fazendo de errado?
[root@server htdocs]# pwd
/srv/www/htdocs
[root@server htdocs]# type -a find
find is /usr/bin/find
[root@server htdocs]# ls -la | grep index.php
-rw-rw-r-- 1 andris users 413 Sep 1 2013 index.php
[root@server htdocs]# find . -name "index.php"
find: .: No such file or directory
[root@server htdocs]# find .
.
find: .: No such file or directory
[root@server htdocs]# stat .
File: `.'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: ca00h/51712d Inode: 155686 Links: 12
Access: (0775/drwxrwxr-x) Uid: ( 504/ andris) Gid: ( 100/ users)
Access: 2014-06-17 19:37:22.000000000 +0000
Modify: 2014-06-08 21:06:16.000000000 +0000
Change: 2014-06-08 21:06:16.000000000 +0000
[root@server htdocs]# find --version
GNU find version 4.2.27
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION SELINUX
strace find .
saída: https://gist.github.com/andrisp/f3adaf740548eead33da
[root@server htdocs]# find . -noleaf -name "index.php"
find: .: No such file or directory
ls -la|grep "index.php"
diz?find .
também não funciona? Que talls -al
?find .
encontrar a.
entrada e reclamar que ela não existe é curioso. Aparentemente, este é um erro comfind
qual versão você está usando?strace find .
algum lugar?Respostas:
De acordo com a sua
strace
saída, e não tenho idéia do motivo, oopen()
prefixo da função nomeia os arquivos com/proc/
:fonte
Você pode não ter permissão de execução para o usuário no diretório em que está pesquisando. Possui permissão de leitura e execução?
fonte
Experimente com o caminho absoluto, como:
E, como já mencionado acima, pode ser que você não tenha permissões. O que acontece se você:
Seu shell sabe o que fazer com o ponto?
fonte
Você pode usar
A melhor maneira de procurar arquivo ou pasta é:
updatedb
(para atualizar o índice do arquivo do sistema).locate Myfile
fonte
updatedb
elocate
exigindo que um pacote que forneça ambos seja instalado (por exemplo,mlocate
).Estou usando o Red Hat Enterprise Linux Server versão 6.4 (Santiago). Você pode ter certeza de que está usando a localização correta
/usr/bin
ou/bin
para garantir que o comando find esteja lá. Se você não pode mesmo fazer umman
onfind
, tente alterar o seu shell a qualquer/bin/ksh
ou/bin/bash
. Descobri que as variáveis e os caminhos do ambiente podem ficar confusos de vez em quando.fonte
Como outros já mencionaram, usar o caminho completo para encontrar o binário pode ajudar. É possível encontrar um alias com sinalizadores adicionais no seu sistema. A digitação
\find
evitará que aliases sejam usados também. Você também pode usaralias
para exibir aliases de comando na sua sessão atual do shell.fonte
Eu vi isso acontecer no Mac quando o diretório está na mídia removível que foi removida e lida desde que a janela do terminal foi aberta. Não sei explicar por que (provavelmente tem a ver com informações armazenadas em cache quando a sessão do terminal foi iniciada), mas era reproduzível. Apenas reiniciei a sessão do terminal e tudo estava bem.
fonte