10 exemplos de uso do comando find no Linux

O find é um utilitário incrivelmente flexível e muito usado na linha de comando do Linux/UNIX ou dentro de scripts.
Com ele é possível encontrar arquivos por tipo, por condição, por conteúdo etc. dentro do seu sistema e através de buscas recursivas.

O comando find já foi abordado em outros artigos, neste site.
Se você tiver interesse em complementar seu conhecimento sobre o tema, clique nos links no decorrer do texto ou use o sistema de busca do site.

Nestes exemplos, vou mostrar que você pode usar diversos critérios de busca com o comando find: permissões, pertencimento (ownership), por data/hora de alteração, por tamanho etc.

Por ser um comando padrão, no UNIX e no GNU/Linux, não há necessidade de instalar nada. Apenas abra um terminal (Ctrl + Alt + T, no Ubuntu) e comece a aplicar os exemplos.

O comando find é uma ferramenta essencial para o aprendizado de quem deseja se tornar produtivo na linha de comando do Linux ou do MacOS.

Exemplos de uso do find

O uso básico do find não precisa incluir qualquer opção ou parâmetro.
Ao executar o find no diretório (pasta) atual, ele irá perscrutar todos os subdiretórios, recursivamente, e exibir a lista completa de arquivos, inclusive aqueles que estão ocultos.


find

A depender do diretório atual, a execução pode ser um pouco demorada. Mas pode ser interrompida a qualquer momento com as teclas Ctrl + C.
Geralmente, é possível combinar o find ao comando grep, para refinar os resultados da busca:


find | grep -i "comando find"

./Documentos/Livros/Imagens/elias.praciano.com - featured/comando find.jpg
./.fotoxx/thumbnails/hem/justincase/Documentos/Livros/Imagens/elias.praciano.com - featured/comando find.jpg.jpeg

O comando acima é equivalente ao ls, conforme o exemplo abaixo:


ls -lahR | grep -i "comando find"

… o find costuma ser bem mais rápido, contudo. Faça as suas experiências.

O comando pode ser executado especificamente em um diretório:


find Imagens/2018/

Também é possível filtrar por nome ou extensão do arquivo que você deseja encontrar:


find Imagens/2018/*.ods

Imagens/2018/foapiso.ods
Imagens/2018/imagens2018_18-55mm.ods
Imagens/2018/imagens2018_75-300mm.ods
Imagens/2018/imagens2018_sigma30mm.ods
Imagens/2018/stat-imagens2018.ods

Com o parâmetro ‘-name’, é possível obter resultados mais precisos em sua busca.


find Imagens/2018/ -name "panoramas"

Imagens/2018/06/16/panoramas

O resultado da busca é sensível à caixa (maiúsculas/minúsculas) das letras.
Para desligar a sensibilidade (case sensitiveness), use ‘-iname’:


find Imagens/2018/ -iname "panoramas"

Use também os coringas entre as aspas:


find Imagens/2018/ -iname "*noram*"

Imagens/2018/05/01 ana maria/panorama_2242_2247.tif
Imagens/2018/05/01/darktable_exported/panorama_2242_2247.jpg
Imagens/2018/06/16/panoramas

Ao optar por fazer a busca no diretório raíz / todo o sistema será vasculhado, incluindo a rede e os dispositivos externos conectados (se estiverem montados).

A recursividade é padrão para o comando find. Se você quiser restringir a profundidade da busca, precisa definir isso claramente.
Com a opção ‘-maxdepth’ é possível determinar até quantos subdiretórios devem ser analisados.


find Imagens/ -maxdepth 3 -iname "*.cr2"

Imagens/Capture/capture000000.cr2
Imagens/Capture/capture000001.cr2
Imagens/Capture/capture000002.cr2
Imagens/Capture/capture000003.cr2
Imagens/Capture/capture000004.cr2
Imagens/Capture/capture000005.cr2
Imagens/Darktable/20180525_noname/20180525_0001.CR2
Imagens/Darktable/20180525_noname/20180525_0002.CR2
Imagens/Darktable/20180525_noname/20180525_0003.CR2

Para fazer a busca apenas no diretório atual, sem recursividade, use ‘-maxdepth 1’.

Também é possível inverter o filtro da busca.
Por exemplo, eu sei que dentro de Imagens/ há vários subdiretórios com arquivos .jpg e .cr2 (arquivos RAW da Canon). Mas também há outros tipos de arquivos.
Veja como excluir dos resultados da busca os arquivos .cr2:


find Imagens/ -not -iname "*.cr2"

Para facilitar, use ‘!’ no lugar de ‘-not’:


find Imagens/ ! -iname "*.png"

Use o operador ‘-o’ (OR) para restringir a busca a 2 ocorrências:


find Imagens/ -iname "*.txt" -o -iname "*.ods"Imagens/2018/aberturas.txt

Imagens/2018/distfocal.txt
Imagens/2018/distfocal_75-300.txt
Imagens/2018/maio2018.txt
Imagens/2018/stat-imagens2018.ods
Imagens/2018/imagens2018_18-55mm.txt
Imagens/2018/imagens2018_18-55mm.ods
Imagens/2018/imagens2018_75-300mm.txt
Imagens/2018/imagens2018_sigma30mm.txt
Imagens/2018/imagens2018_75-300mm.ods
Imagens/2018/imagens2018_sigma30mm.ods
Imagens/2018/imagens2018_sigma30mm-b.txt
Imagens/2018/imagens2018_Yongnuo35-50mm.txt
Imagens/2018/foapiso.txt
Imagens/2018/foapiso.ods

O operador AND pode ser invocado com a opção ‘-a’, embora seja um comportamento padrão:


find Imagens/2018 -iname "*.cr2" -a -iname "*.jpg" 

Combine com o operador ‘!’, para excluir exatamente aqueles 2 tipos de arquivos:


find Imagens/2018 ! -iname "*.cr2" -a ! -iname "*.jpg" 

Notou que os nomes de diretórios também são mostrados?
Pois é… Para o UNIX/Linux “tudo é arquivo”.

Se quiser filtrar mais ainda os resultados, para mostrar apenas arquivos “de verdade”, use a opção ‘-type f’:


find Imagens/2018 -type f ! -iname "*.cr2" -a ! -iname "*.jpg"

Use o comando wc, para contar quantos arquivos (no meu exemplo) não são .cr2 ou .jpg, na busca:


find Imagens/2018 -type f ! -iname "*.cr2" -a ! -iname "*.jpg" | wc -l

445

No exemplo simplificado, abaixo, veja como encontrar todos os estilos do DarkTable armazenados em uma pasta:


find Imagens/2018 -type f -iname "*.dtstyle" | wc -l

255

A sua pesquisa pode incluir mais de um diretório:


find Imagens/2018/06/ Imagens/2018/04/ -type f -iname "*.xmp"

Imagens/2018/06/02/img_4337.cr2.xmp
Imagens/2018/06/12/img_4667.cr2.xmp
Imagens/2018/06/15/img_4891.cr2.xmp
Imagens/2018/06/16/img_4996.cr2.xmp
Imagens/2018/06/16/panorama/img_5064.cr2.xmp
Imagens/2018/04/25/img_1536.cr2.xmp
Imagens/2018/04/28/break/img_1962.cr2.xmp

Espero que, com estes exemplos, tenha ajudado você a entender e usar melhor o comando find no seu sistema. 😉
Divirta-se!

Use o Xarchiver para criar backups criptografados

O Xarchiver é, antes de mais nada, um gerenciador/gestor de arquivos — que nem o Nautilus, do GNOME (presente no Ubuntu, Debian, Fedora etc.)
O seu destaque é a possibilidade de empacotar arquivos em diversos formatos, através de variados métodos ou algoritmos.

Já mostrei como compactar arquivos no Linux, usando o Xarchiver.
Aqui, vamos ver como adicionar senha, para impedir que o conteúdo dos arquivos seja visto por pessoas não autorizadas por você.

O Xarchiver tem os seguintes recursos, em relação aos formatos suportados:

  • tem suporte aos formatos mais usados de empacotamento: arj, rar, zip, bzip2, gzip, lha, lzma, 7z, tar, tar.bz2, tar.gz, tar.lzma, deb and rpm
  • leitura e criação de comentários nos arquivos arj, rar e zip.
  • quando o formato tem suporte a auto-extração, o Xarchiver também tem.
  • auto detecção de arquivos criptografados por senha, nos formatos arj, rar e zip. Tem suporte a criptografia 7z, mas não auto detecção.
  • tem suporte aos formatos mais usados de empacotamento: arj, rar, zip, bzip2, gzip, lha, lzma, 7z, tar, tar.bz2, tar.gz, tar.lzma, deb and rpm

Passo a passo para arquivar com senha

Vou usar como exemplo, o arquivo backup003.zip.
Com o arquivo aberto e seu conteúdo aparecendo na tela principal, selecione Ação/Adicionar (ou Ctrl + D)
como criptografar arquivos no Linux usando o xarchiver
Em seguida, na tela de seleção e inclusão de novos arquivos ao pacote, selecione a aba “Opções”.
como criptografar arquivos no Linux usando o xarchiver
No painel de opções, localize a caixa para ativar e digitar a senha.
como criptografar arquivos no Linux usando o xarchiver
Quando não há suporte a criptografia, a chave com senha ou a qualquer outra opção, as alternativas possíveis aparecem esmaecidas no painel.
como criptografar arquivos no Linux usando o xarchiver
Neste caso, resta procurar outra opção de compactação ou empacotamento, dentre as muitas que o aplicativo já oferece.
Note que, dentro do pacote, os arquivos são armazenados com seus nomes reais.
Isto quer dizer que o método de compressão age sobre o conteúdo e deixa os nomes dos arquivos intactos.
Ou seja, convém evitar usar nomes “chamativos” que, em tese, acabam “entregando mais do que o próprio conteúdo”:

  • como_eu_roubei_um_banco.txt
  • NotasFiscaisFriasDaMinhaEmpresa.odt
  • MinhaFotoMostrandoOQueNãoDeveria.jpg
  • etc.

Acho que deu pra entender… 😉

Como extrair arquivos empacotados com senha?

A extração é muito intuitiva.
Localize o pacote de arquivos, com o seu gerenciador de arquivos preferido (pode ser o Nautilus, para quem usa o GNOME).
Clique 2 vezes sobre ele.
como criptografar arquivos no Linux usando o xarchiver
Assim que você tentar fazer a leitura de algum arquivo, dentro do pacote, a senha será pedida.

Como acessar o gerenciador de arquivos nativo do Android 6.0 Marshmallow.

Algumas pessoas instalam aplicativos desenvolvidos por terceiros para fazer a gestão de arquivos no seu smartphone ou tablet.
As principais funções de um software desta natureza vai de explorar o sistema a manipular arquivos dentro dos seus dispositivos de armazenamento.
O gerenciador nativo, presente no Marshmallow, não é completo e não traz sequer funções básicas que permitam renomear arquivos.
Mas, se você deseja explorar as pastas (ou diretórios) presentes no seu aparelho e executar funções como:

  • copiar um arquivo ou diretório para outro lugar;
  • remover um arquivo ou diretório;
  • compartilhar um vídeo, uma imagem ou qualquer outro arquivo.

… ele resolve! 😉

Como chegar ao gerenciador de arquivos

Comece com a abertura do menu de configurações.
Em seguida, role para a secção Dispositivo e toque em Armazenamento e USB.
Android armazenamento e USB
Dentro do painel Armazenamento e USB, selecione um de seus dispositivos de armazenamento disponíveis — normalmente só há o Interno e o Cartão SD.
Android relação de dispositivos de armazenamento
Após selecionar o dispositivo de armazenamento, role a tela até o fim.
Toque na última opção Explorar, para iniciar o gerenciador de arquivos.
Android explorar sistema de arquivos
Agora, você já está usando o gerenciador de arquivos nativos do Android.
Android Marshmallow gerenciador de arquivos nativo
É possível modificar a visualização do gestor, através do submenu do aplicativo, no canto superior direito.

Como renomear múltiplos arquivos no Linux, com o comando rename.

O utilitário rename, escrito em Perl, pelo próprio Larry Wall, permite alterar os nomes de vários arquivos em lote, dentro de condições e regras que você mesmo pode estabelecer.
Normalmente, quando queremos renomear um arquivo ou diretório, no GNU/Linux, usamos o comando mv (move).
Quando o trabalho envolve uma grande quantidade de arquivos, o rename oferece mais flexibilidade, como ferramenta.
Vale aprender a utilizá-lo — até por que é uma maravilha se for integrado a algum script.
O cmando rename no Linux

Como usar o comando rename

O utilitário, tal como o seu nome indica, renomeia múltiplos arquivos ou grupos de arquivos.
Com o uso de expressões Perl, o rename pode alterar nomes de arquivos para “tudo” maiúsculas/minúsculas, entre outras coisas.
No exemplo. que segue, vou criar 4 arquivos para usar nos meus exemplos, com o comando touch:

touch abril2015.bak junho2015.bak maio2015.bak marco2015.bak

A seguir, renomear todos os arquivos criados, com extensão ‘.bak’ para a nova extensão ‘.backup’. Veja:

rename 's/\.bak$/\.backup/' *.bak

O comando, acima, se divide em dois argumentos:

  • No primeiro, temos a expressão em Perl 's/\.bak$/\.backup/' que substitui .bak por .backup
  • No segundo, é informado a que arquivos o comando se aplica: todos que têm extensão .bak

Veja o meu resultado:

ls -l

total 4
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 abril2015.backup
drwxrwxr-x 4 justincase justincase 4096 Out  1 16:36 box
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 junho2015.backup
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 maio2015.backup
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 marco2015.backup

Verifique as alterações antes de aplicá-las

Quando se vai executar uma tarefa em lotes e, como consequência, atingir vários arquivos ao mesmo tempo, é interessante ter certeza de que o efeito produzido seja exatamente o que se deseja.
Voltar atrás, depois de renomear dezenas, centenas ou milhares de nomes de arquivos, pode ser muito difícil.
Para isto, o comando rename dispõe de uma opção que simula seus efeitos, mostrando o que seria feito, para você poder avaliar se é o que deseja.
No comando abaixo, será pedido ao rename que simule a alteração das extensões dos arquivos de volta para .bak:

rename -n -v 's/\.backup$/\.bak/' *.backup

A opção ‘-n’, quer dizer no-act, ou seja, pede para que o rename não aja.
A opção ‘-v’, pede para que o programa seja verboso e conte tudo o que está fazendo.
O meu resultado, foi este:

abril2015.backup renamed as abril2015.bak
junho2015.backup renamed as junho2015.bak
maio2015.backup renamed as maio2015.bak
marco2015.backup renamed as marco2015.bak

Note que, ao pedir uma listagem do diretório…

ls -l

… Nada foi feito:

-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 abril2015.backup
drwxrwxr-x 4 justincase justincase 4096 Set 29 16:18 box
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 junho2015.backup
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 maio2015.backup
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 marco2015.backup

Como converter nomes de arquivos de minúsculas para maiúsculas e vice-versa

Para converter de minúsculas para maiúsculas, use a seguinte fórmula:

rename -v 'y/a-z/A-Z/' *.backup
abril2015.backup renamed as ABRIL2015.BACKUP
junho2015.backup renamed as JUNHO2015.BACKUP
maio2015.backup renamed as MAIO2015.BACKUP
marco2015.backup renamed as MARCO2015.BACKUP
[/bash]
Veja a minha listagem:


total 4
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 ABRIL2015.BACKUP
drwxrwxr-x 4 justincase justincase 4096 Set 29 16:18 box
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 JUNHO2015.BACKUP
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 MAIO2015.BACKUP
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 MARCO2015.BACKUP

Para fazer a operação inversa, troque a posição dos caracteres na expressão 'y/a-z/A-Z/' para 'y/A-Z/a-z/'.

Como acessar arquivos na nuvem com o WebDAV

Com o protocolo WebDAV, é possível acessar arquivos armazenados na nuvem de qualquer servidor compatível.
Neste post, vou usar, como exemplo, um servidor de aplicativos (e arquivos) na nuvem ownCloud, para mostrar como o acesso pode ser feito para copiar, criar, remover, alterar e compartilhar arquivos.
captura de tela do gerenciador de arquivos acessando um servidor WEBDAV

O protocolo WebDAV transforma a web em uma mídia passível de ser lida e escrita.
O WebDAV (Web Distributed Authoring and Versioning) é uma extensão do HTTP, que facilita a colaboração entre usuários na edição e manipulação de documentos e arquivos na Internet. (Wikipedia)

O meu servidor de arquivos na nuvem, fica no endereço http://localhost e os exemplos, que seguem serão baseados nestes valores — altere-os, para que o tutorial se adeque à sua realidade.

Acesse seus arquivos no servidor, usando qualquer gerenciador de arquivos

Atualmente, qualquer gerenciador de arquivos, no Linux, tem a capacidade de acessar um servidor via WebDAV — isto inclui: o Dolphin (KDE), o Nautilus (Ubuntu), o Thunar (Xubuntu) etc.
Basta ter o servidor funcionando e fornecer o endereço correto.
No meu caso, o endereço a ser acessado é o seguinte:
dav://localhost/owncloud/remote.php/webdav/
Nota: Se sua conexão ao servidor é HTTPS (segura), use davs:// em vez de dav://.
No Nautilus, clique em Arquivo e selecione a opção de Conectar ao servidor.
Forneça o nome de usuário e a senha, já cadastrados, para ter acesso aos seus arquivos.

Captura de tela do gerenciador de arquivos thunar com o submento de contexto aberto
Clique para ver detalhes.

Não se esqueça de adicionar o endereço aos favoritos ou marcadores para não precisar mais digitar tudo nas próximas vezes.

Clientes WebDAV

A Microsoft introduziu o suporte ao WebDAV no Windows 98, em um recurso chamado web folders.
O Mac OS X, a partir da versão 10, suporta o WebDAV, como um sistema de arquivos — o que permite ao montar diretórios remotos no servidor, usando o mecanismo tradicional do BSD.
Usuários Linux podem montar diretórios WebDAV com o uso dos módulos davfs2 e e fusedav, que os monta como sistemas de arquivos Coda ou FUSE.
O KDE tem suporte nativo ao WebDAV, o que permite acessar servidores remotos naturalmente com o Konqueror ou o Dolphin (a escolhe é sua) ou de qualquer outro aplicativo, com direito a interação direta e controle total.
Todas as outras aplicações, que fazem uso da GIO library, o que inclui o Nautilus, o Thunar (XFCE) etc. têm acesso ao WebDAV, com o uso do GNOME Virtual File System (GVFS) ou Sistema de Arquivos Virtual GNOME.

LEIA MAIS

Referências: