Recherche floue de fichiers dans la ligne de commande Linux

Comment trouvez-vous des fichiers dans la ligne de commande Linux ? Vous utilisez la commande de recherche. C’est la réponse standard et il n’y a rien de mal à cela.
Habituellement, vous tapez la commande avec vos paramètres de recherche, appuyez sur Entrée et elle affiche les résultats.
Vous pouvez améliorer votre expérience de recherche de fichiers dans le terminal grâce à la recherche floue.
La recherche floue est un algorithme ou une technique de recherche approximative. Ici, les fichiers d’un emplacement spécifié sont recherchés par nom et l’utilisateur obtiendra des résultats en temps réel.
La recherche floue est populaire dans les moteurs de recherche Web, où un utilisateur commence à saisir le terme et commence à afficher les résultats liés au terme.
Dans cet article, je vais discuter de deux outils CLI qui vous permettent d’effectuer des recherches floues sous Linux :
- Fzf : Chercheur flou
- Fzy : Sélecteur flou
Contents
Fzf, le Fuzzy Finder sous Linux
Fzf est un outil de recherche floue disponible pour Linux, où vous pouvez rechercher des fichiers de manière interactive.
À installer fzf
dans Ubuntu, ouvrez un terminal et exécutez :
sudo apt install fzf
Alors que fzf
lui-même fonctionne correctement, il est sage de l’utiliser en conjonction avec d’autres outils pour en tirer le meilleur parti.
Utilisation de fzf
Ouvrez un terminal et lancez :
fzf
Cela ouvrira une invite de fzf
où vous pouvez rechercher des fichiers dans le répertoire de travail actuel.
fzf
Appliquer une bordure à fzf
Vous pouvez utiliser le --border
option de fzf. Il existe plusieurs options comme arrondi, pointu, etc.
fzf --border=rounded
fzf
avec bordureAppliquer la couleur d’arrière-plan et de premier plan
À l’aide de la propriété color, vous pouvez définir les couleurs ANSI sur fzf
en arrière-plan, en avant-plan ou les deux.
fzf --color="bg:black,fg:yellow"
Vous pouvez concaténer les options pour faire fzf
visuellement agréable.
Maintenant, permettez-moi de montrer une utilisation pratique de la recherche floue avec fzf.
Utilisez fzf pour rechercher dans l’historique de bash
Bien sûr, il y a une recherche inversée CTRL + R dans l’historique bash. Mais si vous voulez utiliser fzf
pour mieux voir, exécutez:
history | fzf
fzf
pour rechercher dans l’historique de bashUtiliser fzf avec la commande tree
La commande Tree répertorie les fichiers et les répertoires avec leur connexion hiérarchique.
En utilisant fzf
avec tree
La commande peut vous aider à trouver le chemin absolu d’un fichier particulier.
tree -afR /home/$USER | fzf
💡
La commande ci-dessus invoquera tree
et lister tous les fichiers (-a) y compris ceux cachés de manière récursive (-R). Également -f
L’option indique à l’arbre de lister le chemin complet.
Prévisualiser les fichiers dans fzf
Parfois, il sera utile d’obtenir un petit aperçu du fichier que vous recherchez.
Heureusement, fzf
fournit une option de prévisualisation. Vous pouvez y accéder en utilisant --preview
. je suis ici en utilisant find
commande pour le rendre encore plus utile.
find /home/$USER -type f | fzf --preview 'less {}'
Ici, pendant que vous faites défiler le résultat, il affichera les fichiers texte en utilisant moins.
🚧
Si vous utilisez d’autres commandes comme ls
etc. n’utilisez pas d’options telles que -l
, qui affichera des détails supplémentaires (autorisations de fichiers). Ces détails supplémentaires briseront le format requis pour fzf
Aperçu. le hile en utilisant la fonction de prévisualisation, l’entrée à fzf
ne doit être que le nom du fichier.
Si tu as bat
installé, vous pouvez également l’utiliser pour prévisualiser les fichiers.
find /home/$USER -type f | fzf --preview 'bat --color always {}'

Pour les utilisateurs d’Ubuntu, bat est disponible en tant que batcat
. Alors lancez :
find /home/$USER -type f | fzf --preview 'batcat --color always {}'
💡
Créer un alias pour ces commandes, afin que vous ne vouliez pas les taper encore et encore.
Utilisez fzf pour cd dans n’importe quel répertoire de n’importe où (avancé)
C’est un peu plus délicat que le précédent. Ici, vous ne pouvez pas directement diriger fzf
et cd
ensemble, car les deux sont des processus différents.
Vous pouvez créer un alias en utilisant la commande comme :
cd $(find /home/$USER -type d | fzf)
Ou, vous pouvez suivre la méthode expliquée ci-dessous.
Pour ce faire, vous devrez peut-être ajouter une fonction à votre bashrc. Permettez-moi d’appeler cette fonction comme finder
. Ajoutez maintenant les lignes suivantes à votre fichier bashrc.
finder() {
local dir
dir=$(find required/location/to/search/and/enter -type d | fzf)
if [[ -n "$dir" ]]; then
cd "$dir" || return
fi
}
Maintenant, vous devez entrer l’emplacement où se trouvent les répertoires que vous souhaitez rechercher et entrer.
Par exemple, j’ai remplacé cette partie par /home/$USER
pour indiquer que je dois cd
dans tous les répertoires de ma maison de n’importe où.
Une fois que vous avez enregistré votre bashrc, redémarrez le terminal ou exécutez :
source ~/.bashrc
Après cela, vous pouvez exécuter le Finder à partir du terminal et une fois que vous avez localisé le répertoire dans lequel vous souhaitez entrer, appuyez sur la touche Entrée.
Copiez la sélection dans le Presse-papiers
Jusqu’à présent, vous avez vu utiliser fzf
et dans tous les cas, il donne soit un résultat de recherche, soit un aperçu.
Désormais, si vous souhaitez copier l’emplacement d’un élément, vous n’avez pas nécessairement besoin de le faire manuellement. Il existe une solution pour cela aussi.
Tout d’abord, assurez-vous que Xclip est installé.
sudo apt install xclip
Maintenant dirigez-le vers xclip comme ceci :
fzf | xclip -selection clipboard
Cela copiera toutes les lignes sur lesquelles vous avez appuyé sur la touche Entrée dans votre presse-papiers.
Autres utilisations
Comme je l’ai dit plus tôt, vous pouvez utiliser n’importe quelle commande impliquant une quantité importante de texte et vous souhaitez rechercher une chose particulière de manière interactive.
cat ~/.bashrc | fzf
– Rechercher dans Bashrclsblk | fzf
– Recherche dans la liste des dispositifs de verrouillageps -aux | fzf
– Rechercher dans la liste des processus
Autre choix : Fzy, le Fuzzy Selector
Contrairement à fzf
, fzy
est un sélecteur flou, où vous sera fourni un menu à sélectionner, en fonction de l’entrée.
Par exemple, si vous utilisez fzy
en collaboration avec ls
commande, il vous donnera un menu comme une interface.
fzy
commandePar défaut, il vous montrera dix entrées en vue.
Entrez dans un répertoire en utilisant fzy
Semblable à fzf, fzy peut également être utilisé pour entrer dans un répertoire du répertoire de travail actuel en utilisant :
cd $(find -type d | fzy)
Ouvrir un fichier à l’aide de n’importe quel éditeur
Ou ouvrez un fichier à l’aide de votre éditeur préféré en :
nano $(find -type f | fzy)
Bonus : un aperçu personnalisé du fichier et de l’image
La commande ci-dessous ouvrira une invite personnalisée dédiée dans Ubuntu pour la recherche floue, où vous pouvez prévisualiser les fichiers texte en les faisant défiler.
find /home/$USER -type f | fzf --color="bg:black,fg:yellow" --preview 'batcat --color always {}' --preview-window=bottom
Créez un alias pour cela dans votre bashrc pour un accès facile.
Ou prévisualisez une image en fzf pendant le défilement en utilisant timg
visionneuse d’images en ligne de commande. Installez-le en utilisant :
sudo apt install timg
🚧
N’oubliez pas que la visionneuse d’images n’affichera pas une image appropriée, car ce n’est pas le but principal de l’aperçu fzf
fzf --preview 'timg -g 200x100 {}' --preview-window=right:90
Pour ceux qui sont bricoleurs, essayez de réaliser cette partie en affinant.
Alternatives modernes au sauvetage
La plupart des commandes Linux ont été héritées de l’ère UNIX. Ils sont vieux mais fonctionnent comme prévu. Mais cela ne signifie pas qu’ils ne peuvent pas être améliorés.
Je veux dire, vous n’avez pas besoin de réinventer la roue, mais vous pouvez toujours travailler à l’amélioration des roues.
Des outils modernes comme fzf et fzy font passer la recherche de fichiers dans le terminal Linux au niveau supérieur. Voici quelques autres outils de ligne de commande de ce type qui pourraient vous intéresser.
Alternatives modernes à certaines des commandes Linux classiques
Considérez-vous un utilisateur Linux moderne ? Avez-vous déjà essayé ces remplacements modernes des commandes Linux classiques ?

J’ai essayé de donner quelques exemples pratiques pour ces outils de recherche floue. J’espère que vous les trouverez suffisamment inspirants pour vous. Faites-moi savoir dans les commentaires si vous comptez les utiliser.