Localizar arquivos no Linux usando o terminal é uma tarefa básica e essencial a qualquer um que deseja utilizar o sistema em níveis avançados. Administradores de sistemas, por exemplo, quando precisam encontrar arquivos ou até mesmo programas com agilidade, não podem depender de ferramentas de interface gráfica para tal.
Todo sysadmin pensa dessa forma? Isso é algo que não posso afirmar, mas qualquer usuário, por experiência própria, está apto a perceber que a estabilidade e o desempenho do terminal ajudam grandemente na realização das atividades, bastando a cada um dominar a habilidade que o uso de comandos requer.
Pensando em ajudá-lo a adquirir mais conhecimento nesse sentido e, com isso, aproximar-se ainda mais da navegação no Linux like a pro, separei os seis principais comandos para localizar arquivos via terminal acompanhados de exemplos de uso. Vamos a eles!
1. find
O comando find é tão importante que já existe um artigo específico aqui no blog. A ferramenta se caracteriza pela sintaxe simples e sua vasta quantidade de opções que permite ao usuário fazer buscas a partir de critérios, condições, filtros e outras incrementações que ajudam o sistema a fornecer o melhor resultado possível.
No artigo mencionado há pouco você encontra alguns exemplos de uso do comando find, os quais serão complementados mais adiante, que mostram, inclusive, a possibilidade de combinar múltiplos critérios para obter mais precisão na busca por meio do inversion (“!”) ou do or (representado pela opção -o). Exemplo:
$ find ./test -name 'comandofind*' ! -name '*.php' ./test/comandofind.txt ou $ find -name '*.php' -o -name '*.txt' ./exemplo.txt ./subdir/comandofind.php ./exemplo2.php ./exemplo3.txt
Vamos conhecer outras opções do comando find? Vejamos outros X exemplos.
Localizar arquivos em um diretório a partir da extensão
Suponha-se que o usuário queira saber onde se encontra um arquivo de texto do qual ele não se lembra o nome, tampouco o diretório em que guardou. Uma boa solução para o problema é aplicar o comando find + o diretório home + opção -name + a extensão do arquivo. Exemplo:
find /home -name ‘*.txt’
O asterisco é um metacaractere muito comum no Linux e a sua função é generalizar a busca. No caso acima, o único fato era a existência de um arquivo de texto no sistema de arquivos, então o “*” foi utilizado a fim de obter uma lista com todos os arquivos .txt.
Encontre arquivos com permissões 777
Quando usamos o chmod 777 a fim de atribuir a permissão máxima ao usuário sobre um arquivo, diretório ou dispositivo, livre de restrições, aplicamos o modo octal 777. É fundamental o cuidado com esse procedimento em função dos seus riscos quando direcionado a um objeto crucial, como um diretório root, pois abre uma brecha suficiente para um invasor dominar o sistema.
Tendo em vista a prevenção, podemos localizar todos os itens com permissões 777 usando o comando find da seguinte maneira:
find . -type f -perm -0777 -print
O mesmo é aplicável a qualquer outra permissão.
Encontre arquivos modificados com base temporal
“Removi um documento importante e só me toquei dois meses depois”. Você se identifica um pouco (ou muito) com tal situação? Bom, se voltar a acontecer, saiba que os dados podem ser localizados por meio do comando find. Faça o seguinte:
find / -mtime 60
No exemplo acima, a ideia foi resgatar os arquivos deletados nos últimos 60 dias; logo, para mais ou para menos dias, basta substituir o número “60” no fim do comando.
2. whereis
O comando whereis (onde está, traduzindo livremente para o português) é a opção adequada quando precisamos encontrar um arquivo o mais rápido possível usando linhas de comandos. Mas o find não é a primeira alternativa que surge em mente? Normalmente, sim. Porém nem sempre ela se figura como a mais prática, dependendo do contexto.
De acordo com o manual do whereis, a ferramenta é capaz de localizar arquivos de código fonte, binários e manuais correspondentes às especificações do comando. Se você pretende explorar a pasta /usr/bin da estrutura de diretórios do Linux, por exemplo, o whereis o levará aos resultados fácil e rapidamente. Exemplo:
whereis -b cp cp: /bin/cp
Acima, localizamos o binário da ferramenta cp (comando usado para cópias de arquivos via terminal), especificando com a opção -b que se trata de um binário, apenas digitando o nome do comando em questão.
Embora o resultado seja imediato, cabe frisar que o comando whereis não se aplica a todos os tipos de diretórios; e como saber quando utilizá-lo? Digitando a opção -l, o usuário obtém a lista com cada um dos caminhos possíveis de serem explorados com o whereis.
bin: /usr/bin bin: /usr/sbin bin: /lib/x86_64-linux-gnu bin: /usr/lib/x86_64-linux-gnu bin: /usr/lib bin: /bin bin: /sbin bin: /etc bin: /lib bin: /lib64 bin: /usr/games bin: /usr/local/bin bin: /usr/local/sbin bin: /usr/local/etc ...
3. locate
O comando locate é um dos mais populares e rápidos meios para procurar arquivos no Linux. Ele é, inclusive, mais veloz que o comando find em função do mecanismo de busca, o qual consiste em procurar em um banco de dados (chamado mlocate) que indexa partes de arquivos com os respectivos caminhos dentro do sistema — o find faz uma varredura pelo sistema de arquivos.
Indo ao que interessa: o uso do comando locate é muito fácil; a sintaxe é a mesma para os demais utilitários abordados até aqui, ou seja, o usuário tem de digitar locate + opção (se houver) + item a ser pesquisado.
Por exemplo, se você quer saber onde se encontra um diretório chamado /E-TINET, basta digitar locate “E-TINET”. Localizar arquivos também é algo muito simples com o locate; no caso, digita-se locate arquivo.txt.
Usando algumas opções do comando locate
Versatilidade é também uma característica do comando locate. Suponha-se que você não saiba exatamente como um determinado arquivo foi nomeado, ativar o modo case insensitive pode ser interessante, pois amplia as chances de o objeto ser encontrado. Para isso, utiliza-se a opção -i, conforme o exemplo.
locate -i *arquivo.txt* Output: /home/etinet/arquivo.txt /home/etinet/docs/Arquivo.txt
Se você acredita que a próxima pesquisa tende a retornar uma quantidade exacerbada de resultados e transformar o seu terminal em um extenso relatório, saiba que é possível limitar o número de itens apresentados usando a opção -n. No exemplo, abaixo, limitamos a 15 resultados:
locate "*.txt" -n 15
Cabe observarmos que o banco de dados mlocate, ao qual a ferramenta recorre para puxar os resultados, deve ser atualizado com certa frequência; do contrário, ficamos sujeitos a fracassar na pesquisa. Faça o update digitando sudo updatedb. Se você quer saber o diretório em que está localizado o mlocate, digite: locate -S.
4. grep
Diferentemente dos comandos mencionados no conteúdo, o grep tem a capacidade de identificar padrões dentro de arquivos, o que nos possibilita encontrar informações relevantes dentro de um relatório, por exemplo. É uma excelente ferramenta para profissionais de várias áreas da TI, como programadores e auditores de sistemas.
Por que o comando grep é tão útil para desenvolvedores? Se você é ou pretende ser um programador, imagine-se na seguinte situação: você está participando de um ou mais projetos grandes, como o desenvolvimento de um sistema operacional ou um game complexo; é certo que o seu codebase terá milhares de linhas, ou seja, achar a informação de que necessita pode não ser tão fácil.
Legal, mas como utilizar o comando grep? O modo de uso básico consiste em digitar grep seguido de uma opção (se houver) e / ou termo de pesquisa + arquivo ou diretório. Abaixo, um exemplo de pesquisa por determinada informação em um extenso arquivo de texto.
grep -i keywords books/computing/*.txt Output: books/computing/book1.txt: short tail keywords; books/computing/book1.txt: long tail keywords; books/computing/book33.txt: type any keyword; books/computing/book120.txt: Keywords;
O exemplo acima é aplicável a vários cenários. Inclusive, se você precisa encontrar um trecho de algum código JavaScript, por exemplo, ou de qualquer outra base, basta fazer o mesmo procedimento com o padrão de informação que deseja encontrar e, de preferência, use a opção -i para desativar o modo case sensitive.
5. type
O comando type existe em vários sistemas operacionais; no Linux, o propósito do type é ajudar a descobrir como os comandos são executados no sistema, dando ao usuário uma breve explicação do que se trata o comando, como ele é utilizado e, se for o caso, onde o arquivo binário está localizado. Exemplos:
type sudo sudo is /usr/bin/sudo type ls ls is aliased to `ls –color=auto' type date date is /bin/date type if if is a shell keyword
Se utilizarmos a opção -t exibe o tipo de objeto que pesquisamos. Por exemplo, se o usuário quer saber o que é considerado o item “if” ou “sudo”, o terminal retornará a resposta.
type -t if keyword type -t sudo file type -t pwd builtin Em suma, o comando type é uma boa para compreendermos como as coisas funcionam no sistema.
6. apropos
A propósito: onde está localizado o manual de um determinado recurso ou funcionalidade do Linux que preciso dominar? Lembre-se do comando apropos sempre que isso acontecer. Trata-se de uma ferramenta própria para listagem de todos os tópicos existentes nas man pages relacionadas ao termo pesquisado.
Por exemplo, se o usuário deseja conhecer todas as opções existentes para o comando sudo, ele só precisa digitar apropos sudo no terminal e, então, as informações serão apresentadas na tela. Exemplo:
apropos sudo Output: sudo (8) - execute a command as another user sudo.conf (5) - configuration for sudo front end sudo_plugin (8) - Sudo Plugin API sudo_root (8) - How to run administrative commands sudoedit (8) - execute a command as another user sudoers (5) - default sudo security policy plugin sudoreplay (8) - replay sudo session logs visudo (8) - edit the sudoers file
O output acima demonstra de forma clara como as informações são estruturadas pelo apropos. A primeira coluna lista os títulos; em parenteses, o número de seções existentes no tópico; na última linha de cada item consta uma breve descrição.
Diferentemente da maioria das ferramentas do Linux, o apropos é case insensitive, ou seja, não importa a maneira como o usuário digita as instruções no terminal (capital, maiúsculas, minúsculas etc.): elas serão interpretadas e executadas — contanto que válidas, claro.
Uso do apropos para localizar programas
O apropos também pode ser utilizado para localizar programas que cujo nome ou funcionalidade se relacionam com o termo pesquisado. Por exemplo, se o usuário digitar “editor” com a finalidade de descobrir quais são as ferramentas de edição disponíveis no sistema, o resultado será similar a este:
atobm (1) - bitmap editor and converter utilities for the X Window System bitmap (1) - bitmap editor and converter utilities for the X Window System bmtoa (1) - bitmap editor and converter utilities for the X Window System easytag (1) - tag editor for MP3, Ogg Vorbis files and more ed (1) - line-oriented text editor editor (1) - Nano's ANOther editor, an enhanced free Pico clone editres (1) - a dynamic resource editor for X Toolkit applications … vi (1) - Vi IMproved, a programmer's text editor view (1) - Vi IMproved, a programmer's text editor vim (1) - Vi IMproved, a programmer's text editor winecfg-stable (1) - Wine Configuration Editor xedit (1) - simple text editor for X
Logicamente, quanto mais específica a pesquisa, mais preciso o resultado. Vale destacar que a sequência de caracteres é suficiente para ativar os itens; por exemplo, ao digitar apropos pstree, um software que tenha “str” em qualquer parte do nome será enquadrada na busca.
Localizar arquivos no Linux é tarefa simples
São vários os modos existentes para se localizar arquivos no Linux. O comando find se destaca entre os principais meios disponíveis, porém, dependendo do contexto, as demais alternativas elencadas neste conteúdo podem oferecer mais vantagem em termos de facilidade, eficiência e agilidade. No mais, agora você só precisa começar a praticar os comandos para dominá-los.
O que está achando de aprender a usufruir da infinidade de recursos presentes no Linux? Já percebeu o reflexo do aprendizado à sua carreira profissional na área de TI? Então dê uma olhada neste curso online que vem ajudando muitas pessoas a fazer coisas incríveis com o Linux!