Muitos de vocês usuários do Ubuntu estarão familiarizados com a ferramenta “Procurar Arquivos” que permite que você procure por arquivos. Como é verdade com a maioria das coisas no Linux, existem grandes ferramentas de desktop, mas mais poder pode ser encontrado no Terminal do que qualquer ferramenta simplificada de desktop pode combinar.
Hoje, eu gostaria de lhe apresentar algumas ferramentas que podem transformar uma tarefa de encontrar arquivos em um processo fácil.
locate
A primeira ferramenta com a qual você deve se sentir confortável é também uma das mais simples. O programa locate
funciona de forma semelhante à maioria das ferramentas de pesquisa gráfica.
Using
Vamos dizer que você leu sobre como modificar o X para fornecer um melhor desempenho de vídeo. O documento que você está lendo diz para modificar o arquivo xorg.conf
, mas o documento não diz onde ele está e você não sabe como encontrá-lo. Você pode usar locate
para encontrá-lo rapidamente:
$ locate xorg.conf/etc/X11/xorg.conf/usr/share/man/man5/xorg.conf.5.gz/var/lib/x11/xorg.conf.md5sum/var/lib/x11/xorg.conf.roster
É claro que /etc/X11/xorg.conf
é o arquivo que estamos procurando, mas e se dezenas ou mesmo centenas de resultados forem retornados? Como você poderia gerenciar tudo isso? Se você sabe um pouco sobre expressões regulares (todo usuário do Linux realmente deveria aprender o básico), você pode facilmente usar expressões regulares para procurar por diretórios ou arquivos. Por exemplo, podemos procurar por uma correspondência exata para xorg.conf
com o seguinte comando:
$ locate -r '/xorg.conf$'/etc/X11/xorg.conf
Se você quiser procurar por arquivos sem sensibilidade a maiúsculas e minúsculas, você pode usar a opção -i
. Por exemplo:
$ locate -i 'monthly report'/home/chris/Documents/August Monthly Report.doc/home/chris/Documents/July Monthly Report.doc/home/chris/Downloads/latest monthly report.doc
Algo que pode confundi-lo quando começar a usar locate
é que não só retorna as correspondências, mas se a correspondência for um directório, também lista todos os directórios e ficheiros sob esse directório. Por exemplo:
$ locate Desktop/home/chris/Desktop/home/chris/Desktop/Head Shot.jpg/home/chris/Desktop/Skype.lnk/home/chris/Desktop/Steam.lnk...
Este comando retorna mais de mil entradas no meu sistema. Para reduzir os resultados para uma lista de entradas que correspondem ao termo de pesquisa sem todos os arquivos e diretórios contidos, use o comando -b
option:
$ locate -b Desktop/home/chris/Desktop/home/chris/bin/recordSoundAndDesktop.sh/opt/HipChat4/lib/QtQuick/Controls/Styles/Desktop/usr/include/qt4/QtGui/QDesktopServices/usr/include/qt4/QtGui/QDesktopWidget/usr/lib/libreoffice/program/wizards/common/Desktop.py/usr/lib/libreoffice/share/gallery/computers/Computer-Desktop.png/usr/lib/python2.7/dist-packages/xdg/DesktopEntry.py/usr/lib/python2.7/dist-packages/xdg/DesktopEntry.pyc/usr/lib/python3/dist-packages/xdg/DesktopEntry.py/usr/lib/python3/dist-packages/xdg/__pycache__/DesktopEntry.cpython-35.pyc/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Styles/Desktop/usr/share/kde4/apps/kio_desktop/DesktopLinks/usr/share/man/man3/File::DesktopEntry.3pm.gz/usr/share/perl5/File/DesktopEntry.pm/usr/share/sounds/KDE-Window-All-Desktops-Not.ogg/usr/share/sounds/KDE-Window-All-Desktops.ogg
Ainda há algumas correspondências, mas não temos mais uma ordenação através de todos os resultados extras para encontrar o que estamos procurando.
Important Note
O comando locate
depende de uma base de dados de slocate para funcionar. Este banco de dados armazena o diretório do sistema de arquivos e nomes de arquivos e permite que o comando locate
funcione em momentos ao invés de levar longos períodos de tempo para pesquisar todo o sistema de arquivos.
Esta habilidade não vem sem custo, no entanto. Por padrão, seu sistema executará um comando para atualizar esta base de dados uma vez por dia às 6:25 da manhã. Este comando irá atualizar o banco de dados com quaisquer alterações feitas no sistema de arquivos desde a última atualização.
Se você fez alterações recentemente, tais como adicionar ou remover grandes quantidades de arquivos e diretórios, e você quer usar o comando locate
para procurar por esses novos diretórios e arquivos, você pode atualizar manualmente a base de dados de slocate a qualquer momento com o seguinte comando:
$ sudo updatedb
Dependente do volume de alterações feitas desde a última atualização da base de dados de slocate, isso pode levar de alguns segundos a alguns minutos para atualizar. Uma vez feito, você está pronto para pesquisar novamente com locate
.
que
locate
é ótimo para pesquisar todo o sistema de arquivos. Contudo, às vezes você só quer encontrar onde um comando vive. É aí que which
entra em jogo.
which
só faz uma coisa, mas faz bem. Dado o nome de um comando, que lhe dirá onde reside o ficheiro desse comando no sistema de ficheiros.
Vamos imaginar que queremos descobrir onde reside o comando firefox
. Podemos simplesmente executar o seguinte para descobrir:
$ which firefox/usr/bin/firefox
Por que você quer procurar especificamente por um comando? Imagine que você tem algum código que precisa substituir um comando antigo. Você realmente precisa remover o antigo (eu normalmente renomeio-o para o mesmo nome seguido por “.bak” para mantê-lo por perto caso eu precise dele) antes de colocar o novo em seu lugar. which
irá ajudá-lo a encontrar o ficheiro rápida e facilmente para que não tenha de procurar em todo o lado para o encontrar.
whereis
O comando whereis
é semelhante ao qual mas vai um passo mais além. Ele não só lhe diz onde o arquivo executável está localizado, mas também irá localizar o fonte, a página man, e outros diretórios associados também.
Cepando com o exemplo which
, vamos perguntar whereis
sobre o comando firefox
:
$ whereis firefoxfirefox: /usr/bin/firefox /usr/lib/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz
Isso me ajudou a encontrar /usr/lib/firefox/plugins
mais cedo ao trabalhar na solução para o Flash, já que esse local é onde os add-ons globais para o Firefox são armazenados.
find
find
é a derradeira ferramenta de busca, o canivete suíço de busca do Linux, se você quiser. find
pode fazer tudo desde procurar por arquivos baseados nos últimos tempos modificados, proprietários e grupos, permissões, tipo (arquivo, diretório, link simbólico, etc), se o arquivo é legível/gravável/executável pelo usuário atual, tamanho do arquivo, se o arquivo ou diretório está vazio, e muito mais. Você também pode procurar por correspondência pela expressão regular.
Quando você usa esta ferramenta em combinação com o comando xargs
(que eu terei que cobrir em outro momento), você pode fazer coisas realmente incríveis na linha de comando. Imagine ser capaz de procurar recursivamente através do directório actual por ficheiros terminados com “.bak” que foram modificados pela última vez há mais de 100 dias e depois apagá-los com um comando:
$ find . -name '*.bak' -type f -mtime +100 -print0 | xargs -0 /bin/rm -f
Parecerá muito complexo no início, mas quando dominar a arte de usar find
, tornar-se-á uma segunda natureza. Logo, você vai se perguntar como você já procurou por coisas sem ele.
Para ser franco, há muito mais para encontrar do que eu estou disposto a cobrir e há muitas, muitas grandes introduções à ferramenta que fazem um trabalho melhor do que eu faria. Então, vou simplesmente apontar para três grandes referências que podem ser usadas para começar com o find.
- Exemplos usos do comando find do Linux
- (Peço desculpas pelas cores horríveis de antemão) Tutorial de comando “find” do Unix/Linux
- Usando o comando find
Pesquisa feliz.
Eu ajudei-o?
- Envie-me uma dica via Paypal.
- Ajuda com o alojamento deste site com o meu código de referência Linode.