Questão Como encontrar um diretório no linux?


Eu tenho um VPS com Suse Linux 10.3.

Eu fiz o login via SSH / putty e estou tentando encontrar onde meus arquivos da web estão localizados.

Desde que eu estou enviando via FTP em um diretório chamado httpdocs, Eu suponho que esse diretório existe em algum lugar.

Minhas pesquisas no google me ensinaram a fazer isso, ir ao meu diretório raiz e digitar:

find httpdocs -type d

mas diz "Não existe tal arquivo ou diretório".

Como posso encontrar esse diretório?


396


origem


Caso alguém esteja se perguntando, o comando na pergunta encontra todos os diretórios (-type d) na entrada de diretório httpdocs (relativo ao diretório de trabalho atual, normalmente mas não necessariamente um diretório). Ele falha com a mensagem de erro porque não há entrada de diretório httpdocs no diretório raiz do sistema e, portanto, nenhum ponto de partida para uma pesquisa. - Daniel Beck♦


Respostas:


Isto é:

find / -type d -name 'httpdocs'

o primeiro parâmetro "/" é onde procurar, neste caso "/" é o sistema inteiro.

-name poderia ser -inome para ignorar o caso

também -tipo não é obrigatório

usar : encontrar homem para mais opções


543



find / -name 'httpdocs' funciona muito bem - Edward Tanguay
Pode não importar pesquisas simples, mas para comandos de localização mais complexos, é importante notar que as coisas são avaliadas na ordem em que estão na linha de comando. Então, você pode querer ter o -type d (diretórios apenas) antes de -name, para acelerar as coisas. Novamente, isso pode não importar muito aqui, mas ao entrar em buscas mais complexas pode melhorar consideravelmente a velocidade de busca. - Dominic Eidson
Na verdade, o -name teste é mais rápido do que a maioria dos outros testes desde -name é comparado com a listagem do diretório, que já está carregada do disco, e os outros testes precisam executar um stat(2) para obter informações sobre arquivos. Depois do primeiro stat() solicitar um arquivo, os testes subsequentes são obtidos da memória, por exemplo: -type f -mtime -10. - Arcege
Se você vai realizar um achado em todo o sistema de arquivos, especialmente um servidor, então geralmente é bom usar nicePortanto, o achado não exige muitos recursos de processos mais críticos: nice find / ... - Arcege
Eu adicionaria 2> / dev / null para evitar que meus resultados de pesquisa fiquem ocultos em todos os erros de permissão. - Jason Yeo


este comando deve te dar o que você está procurando:

find / -type d -name httpdocs

que irá procurar na raiz do seu servidor por diretórios com o nome de httpdocs ou se você quiser apenas procurar a partir do diretório atual, substitua o '/' por um '.'

Outro comando que você pode tentar é localizar você faria algo como:

locate httpdocs

59



localizar httpdocs me diz "locate: comando não encontrado" - Edward Tanguay
Para aqueles que usam o comando "locate" (dado que ele existe em seu sistema), certifique-se de que o banco de dados que ele procura esteja atualizado; normalmente algum trabalho cron cuida disso. Caso contrário, execute "updatedb" (sendo root). Em seguida, execute o seu necessário "localizar <somefile>". Isso é necessário para encontrar arquivos / diretórios adicionados recentemente. - David Ramirez
+1 para localizar. Está muito mais rápido, mas apenas se o índice estiver atualizado. Felizmente, algo como "httpdocs" não muda de localização com frequência. Se você está pensando em procurar repetidamente arquivos em uma máquina, vale a pena os poucos minutos necessários para configurar a tarefa cron atualizada. - Doug Harris
Além disso, em muitos casos, o locate retornará muitos resultados, pois todos os arquivos de 100k nesse diretório serão exibidos. Neste caso particular, se cada usuário tiver seus próprios httpdocs com 100 ou 1000 de arquivos, o resultado que o OP deseja provavelmente será perdido. - Jistanidiot
+1 para localizar ... Eu mantenho meu banco de dados atualizado para que este comando seja muito útil ... Ótima idéia. - nicorellius


find / -type d -name httpdocs 2> /dev/null

Isso eliminará todas as mensagens de erro que você provavelmente (leia, sempre) obterá quando não estiver fazendo isso como usuário root. Recomendaria fazer assim.


26



o 2> /dev/null opção é muito útil. Caso contrário, pode ser difícil ver os resultados desejados ... - Gottlieb Notschnabel
Veja também Como posso excluir todas as mensagens de "permissão negada" de "encontrar"? - galath


É importante conhecer o parâmetro -iname para pesquisar padrões "insensíveis a maiúsculas e minúsculas" e o uso de curingas: *,?, Etc.

Dois exemplos:

Pesquise todos os arquivos de / root que contenham a string "Linux", caso insensitivo:

find  /root -type f -iname "*linux*"

Pesquise todos os diretórios de / root que contenham a string "Linux", caso insensitivo:

find  /root -type d -iname "*linux*"

Extraído daqui:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html


10



Esta questão é sobre como encontrar um diretório cujo nome você saiba, não como encontrar um diretório cujo nome você saiba (aproximadamente). Além disso, a resposta aceita (de mais de 6 anos atrás!) Já menciona -iname como uma alternativa insensível a -name. - G-Man


você quase a tem. a sintaxe correta seria:

find / -type d -name httpdocs

O diretório provavelmente está /var/www/


9



que me diz "caminhos devem preceder a expressão" - Edward Tanguay