Como encontrar um diretório no linux?


453

Eu tenho um VPS com o Suse Linux 10.3 .

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

Como estou carregando via FTP em um diretório chamado httpdocs , presumo que esse diretório exista em algum lugar.

Minhas pesquisas no google me ensinaram a fazer isso, acesse meu diretório raiz e digite:

find httpdocs -type d

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

Como posso encontrar este diretório?


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

Respostas:


609

Isto é:

find / -type d -name 'httpdocs'

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

-name poderia ser -iname para ignorar maiúsculas e minúsculas

also -type não é obrigatório

use: man find para mais opções


2
localizar / -name 'httpdocs' funciona muito bem obrigado
Edward Tanguay

91
Pode não ser importante para pesquisas simples, mas para comandos find mais complexos, é importante notar que as coisas são avaliadas na ordem em que estão na linha de comando. Portanto, convém ter o -type d (somente diretórios) antes de -name, para acelerar as coisas. Novamente, isso pode não importar muito aqui, mas, ao entrar em pesquisas mais complexas, pode melhorar consideravelmente a velocidade da pesquisa.
Dominic Eidson

14
Na verdade, o -nameteste é mais rápido que a maioria dos outros testes, pois -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 o arquivo. Após a primeira stat()chamada para um arquivo, um testes subseqüentes obter de memória, por exemplo: -type f -mtime -10.
Arcege

24
Se você deseja realizar uma busca em todo o sistema de arquivos, especialmente em um servidor, geralmente é bom usá-la nicepara que a busca não nice find / ...
consuma

16
Eu acrescentaria 2> / dev / null para evitar que meus resultados de pesquisa fiquem ocultos em todos os erros de permissão.
Jason Yeo

63

Este comando deve fornecer o que você está procurando:

find / -type d -name httpdocs

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

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

locate httpdocs

localize httpdocs me diz "localize: comando não encontrado"
Edward Tanguay

4
Para aqueles que usam o comando "localizar" (considerando que ele existe no seu sistema), verifique se o banco de dados pesquisado está atualizado; normalmente algum trabalho cron cuida dele. Caso contrário, execute "updatedb" (sendo root). Em seguida, execute o "localize <somefile>" necessário. Isso é necessário para encontrar arquivos / diretórios adicionados recentemente.
David Ramirez

+1 para localizar. É muito mais rápido, mas apenas se o índice estiver atualizado. Felizmente, algo como "httpdocs" não muda de local com frequência. Se você planeja pesquisar repetidamente arquivos em uma máquina, vale a pena os minutos necessários para configurar o trabalho cron cron atualizado.
Doug Harris

1
Além disso, em muitos casos, o local retornará muitos resultados, pois todos os arquivos de 100k desse diretório serão exibidos. Nesse caso específico, se cada usuário tiver seus próprios httpdocs com 100 ou 1000 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


13

É importante conhecer o parâmetro -iname para pesquisar padrões "sem distinção entre maiúsculas e minúsculas" e o uso de curingas: *,?, Etc.

Dois exemplos:

Pesquise todos os arquivos de / root que contenham a sequência "Linux", sem distinção entre maiúsculas e minúsculas:

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

Pesquise todos os diretórios de / root que contenham a sequência "Linux", sem distinção entre maiúsculas e minúsculas:

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

Extraído daqui:

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


Esta pergunta é sobre como encontrar um diretório cujo nome você conhece, não como encontrar um diretório cujo nome você conhece (aproximadamente). Além disso, a resposta aceita (de mais de 6 anos atrás!) Já menciona -inamecomo uma alternativa que não diferencia maiúsculas de minúsculas -name.
G-Man

9

você quase o tem. a sintaxe correta seria:

find / -type d -name httpdocs

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


que me diz "caminhos deve preceder a expressão"
Edward Tanguay
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.