fd - Uma alternativa simples e rápida para localizar o comando


A maioria dos usuários do Linux está bem familiarizada com o comando find e os muitos casos em que ele pode ser usado. Hoje vamos revisar uma alternativa para localizar o comando, chamada fd.

fd, é uma ferramenta simples, rápida e amigável com o objetivo de simplesmente executar mais rápido do que encontrar. Não se destina a substituir completamente o find, mas sim a fornecer-lhe uma alternativa fácil de usar com um desempenho ligeiramente mais rápido.

Alguns dos recursos notáveis u200bu200bdo fd:

  1. Easy to use syntax – fd *pattern* instead of find -iname *pattern*.
  2. Colorful output similar to the one of ls command.
  3. Fast performance. Developer’s benchmarks are available here.
  4. Smart search with case-insensitive by default and switches to case sensitive if patter containers an uppercase symbol.
  5. Does not look in hidden files and directories by default.
  6. Does not look into .gitignore by default.
  7. Unicode awareness.

Como instalar o fd no Linux

Vamos ver como instalar o fd em diferentes distribuições Linux.

Para distribuições baseadas em Ubuntu e Debian, você precisará baixar a versão fd mais recente da página de lançamento e instalá-la usando os seguintes comandos.

$ wget https://github.com/sharkdp/fd/releases/download/v7.3.0/fd-musl_7.3.0_amd64.deb
$ sudo dpkg -i fd-musl_7.3.0_amd64.deb

Em outras distribuições do Linux, você pode instalar o fd do repositório padrão usando o gerenciador de pacotes, conforme mostrado.

# dnf install fd-find  [On Fedora]
# pacman -S fd         [On Arch Linux]
# emerge -av fd        [On Gentoo]
# zypper in fd         [On OpenSuse]

Como usar o fd no Linux

Semelhante ao comando find, fd tem muitos casos de uso, mas vamos começar verificando as opções disponíveis:

# fd -h
OR
# fd --help

Vamos dar uma olhada em alguns exemplos. Você pode executar fd sem nenhum argumento, a saída é muito semelhante ao comando ls -R.

# fd

Nos próximos exemplos de fd, usarei uma instalação padrão do WordPress localizada em /var/www/html/ para pesquisar arquivos e pastas diferentes.

No exemplo abaixo, peguei apenas os primeiros 10 resultados para uma saída mais curta do comando.

# fd | head

Digamos que queremos encontrar todos os arquivos jpg. Podemos usar o sinalizador “-e” para filtrar por extensão de arquivo:

# fd -e jpg

O sinalizador “-e” pode ser usado em combinação com um padrão como este:

# fd -e php index

O comando acima irá procurar por arquivos com extensão php e ter a string “index” neles:

Se quiser excluir alguns resultados, você pode usar o sinalizador “-E” como este:

# fd -e php index -E wp-content

Este comando irá procurar por todos os arquivos com extensão php, contendo a string “index” e irá excluir os resultados do diretório “wp-content”.

Se você deseja especificar um diretório de pesquisa, basta fornecê-lo como argumento:

# fd <pattery> <directory>

Assim como find, você pode usar os argumentos -x ou --exec para realizar a execução paralela de comandos com os resultados da pesquisa.

Aqui está um exemplo onde usaremos chmod para alterar as permissões dos arquivos de imagem

# fd -e jpg -x chmod 644 {}

O código acima encontrará todos os arquivos com extensão jpg e executará chmod 644 .

Aqui estão algumas explicações úteis e o uso dos colchetes:

  • {} – A placeholder which will be changed with the path of the search result (wp-content/uploads/01.jpg).
  • {.} – similar to {}, but without using the file extension (wp-content/uploads/01).
  • {/}: A placeholder that will be replaced by the basename of the search result (01.jpg).
  • {//}: Parent directory of the discovered path (wp-content/uploads).
  • {/.}: Only the basename, without the extension (01).

Esta foi uma breve revisão do comando fd, que alguns usuários podem achar mais fácil de usar e mais rápido. Conforme mencionado anteriormente neste artigo, fd não pretende substituir completamente o find, mas sim fornecer um uso simples, pesquisa mais fácil e melhor desempenho. O Fd não ocupa muito espaço e é uma ótima ferramenta em seu arsenal.