Gostaria de determinar a localização de um arquivo usando a linha de comando. Eu tentei:
find . -type f -name "postgis-2.0.0"
e
locate postgis-2.0.0
para nenhum proveito. Qual é o comando para determinar o diretório do arquivo, desde o seu nome?
command-line
directory
find
Sam007
fonte
fonte
locate
comando está bem, apenas atualizar o locatedb primeiro, usando o comandoupdatedb
postgis-2.0.0
mais. Geralmente, depois das instalações via gerenciadores de pacotes, os executáveis ficam em uma das$PATH
pastas e tentamwhich postgis
ver o local. Se não retornar nada, somente então você deverá procurar manualmente o local do arquivo.Respostas:
Tente em
find ~/ -type f -name "postgis-2.0.0"
vez disso.O uso
.
pesquisará apenas o diretório atual.~/
pesquisará todo o diretório pessoal (provavelmente para onde você o baixou). Se você usouwget
como root, é possível que esteja em outro lugar, para que você possa/
pesquisar todo o sistema de arquivos.Boa sorte
fonte
wget
como root assim/
funcionou graçasEu tentaria:
O . significa pesquisar apenas no diretório atual; é melhor pesquisar tudo desde o raiz, se você realmente não souber. Além disso, digite -f significa procurar arquivos, não pastas. A adição
sudo
permite pesquisar em todas as pastas / subpastas.Sua sintaxe para
locate
está correta, mas talvez você precise executarprimeiro. Por alguma razão, eu nunca tenho boa sorte com isso
locate
.locate
usa banco de dados de arquivos e diretórios criados porupdatedb
. Portanto, se você baixou um novo arquivo, há mais chances de o seuupdatedb
não atualizar o banco de dados de arquivos e diretórios. Você pode usarsudo updatedb
antes de usar olocate
programa utilitário.updatedb
geralmente roda uma vez por dia sozinho em sistemas linux.fonte
O find é uma das ferramentas Linux / Unix mais úteis.
Experimentar
find . -type d | grep DIRNAME
fonte
As outras respostas são boas, mas acho que omitir
Permission denied
declarações fornece respostas mais claras (omitestderr
s devido à não execuçãosudo
):Onde:
/
pode ser substituído pelo diretório em que você deseja iniciar sua pesquisaf
pode ser substituído pord
se você estiver procurando por um diretório em vez de um arquivo-iname
pode ser substituído por-name
se você deseja que a pesquisa faça distinção entre maiúsculas e minúsculas*
s no termo de pesquisa podem ser omitidos se você não desejar os curingas na pesquisaUma alternativa é:
Dessa maneira, os resultados serão retornados se o termo de pesquisa corresponder a qualquer lugar no caminho completo do arquivo, por exemplo
/home/postgis-2.0.0/docs/Readme.txt
fonte
-regex
e-iregex
opções para pesquisarRegular Expressions
, que também encontrariam o caminho. A sugestão de encontrar qualquer item que seja um arquivo (-type f
)grep
é mais caro em termos de recursos.Permission denied
acontece quando o usuário não tem acesso a arquivos ou pastas, o uso desudo
before find permitirá encontrar todos os arquivos.-wholename
ou em-iwholename
vez de canalizar paragrep
.Experimentar
find . -name "*file_name*"
onde você pode alterar '.' (procure no Diretório atual) para '/' (procure em todo o sistema) ou '~ /' (procure no diretório inicial).
onde você pode alterar "-name" para "-iname" se não desejar distinção entre maiúsculas e minúsculas.
onde você pode alterar " file_name " (um arquivo que pode começar e terminar com o que quer que seja) para o nome exato do arquivo.
fonte
Isso deve simplificar a localização do arquivo:
Isso daria o caminho completo para o arquivo
Árvore lista o conteúdo dos diretórios em um formato de árvore. a
-f
árvore diz para fornecer o caminho completo para o arquivo. como não temos idéia de sua localização ou localização pai, é bom pesquisar a partir da raiz do sistema de arquivos/
recursivamente para baixo. Em seguida, enviamos a saída para grep para destacar nossa palavra,postgis-2.0.0
fonte
Embora o
find
comando seja a maneira mais simples de percorrer recursivamente a árvore de diretórios, existem outras maneiras e, em particular, as duas linguagens de script que acompanham o Ubuntu por padrão já têm a capacidade de fazê-lo.bater
bash
possui umaglobstar
opção muito boa de shell, que permite a travessia recursiva da árvore de diretórios. Tudo o que precisamos fazer é testar se o item na./**/*
expansão é um arquivo e se contém o texto desejado:Perl
O Perl possui o módulo Find, que permite realizar a travessia recursiva da árvore de diretórios e, através da sub-rotina, executar ações específicas sobre eles. Com um pequeno script, você pode percorrer a árvore de diretórios, enviar arquivos que contêm a sequência desejada para a matriz e imprimi-la da seguinte maneira:
E como funciona:
Pitão
Python é outra linguagem de script usada amplamente no mundo do Ubuntu. Em particular, ele possui um
os.walk()
módulo que nos permite executar a mesma ação que a árvore de diretórios acima - atravessar e obter a lista de arquivos que contêm a sequência desejada.Como uma linha, isso pode ser feito da seguinte maneira:
O script completo ficaria assim:
fonte
$ find . -type f | grep IMG_20171225_*
Fornece ao
./03-05--2018/IMG_20171225_200513.jpg
DOT após o comando
find
declarar um ponto de partida.Portanto , a pasta atual
"canalizada" (= filtrada) através do filtro de nome
IMG_20171225_*
fonte