10 méthodes de recherche de fichiers terminales
Le programme FD est une alternative à trouver, qui peut rechercher le système de fichiers à l'aide de divers modèles. Il dispose de nombreuses options pour prendre en charge un large éventail de cas d'utilisation, ce qui facilite la recherche de tout type de fichier, quelles que soient vos exigences.
Les exemples suivants présentent les larges fonctionnalités de FD. Ils incluent les recherches de base, les expressions régulières, le filtrage par type de fichier, etc.
Sommaire
La recherche la plus simple: trouver tous les noms de fichiers contenant une chaîne fixe
Il s'agit de la recherche la plus courante et la plus de base que vous effectuez régulièrement: des fichiers dont les noms contiennent une chaîne fixe. Ce que vous recherchez dépendra non seulement de vos propres conventions de dénomination mais également de celles couramment utilisées. Par exemple:
fd readme
Cette commande trouvera tous les fichiers avec des noms contenant «Readme», en utilisant une correspondance insensible à la casse. Ainsi, par exemple, cela pourrait inclure:
-
readme.md
-
Réadmettre
-
a-file-with-readme-in-it.txt
-
subdir / readme
Notez que cela est beaucoup plus large qu'une recherche par défaut avec FIND, qui est sensible à la casse et correspond uniquement aux chaînes exactes. Un simple Trouver Readme ne trouve aucun des fichiers ci-dessus; Voici un équivalent qui les trouvera:
find -iname '*readme*'
FD est donc beaucoup plus facile à utiliser pour le cas de base de localisation d'un fichier avec un texte spécifique dans son nom.
Une recherche globale: pour correspondre aux noms de fichiers exacts
Ainsi, FD n'effectue pas la recherche globale par défaut, mais vous pouvez remplacer ce comportement si vous avez besoin d'un autre type de recherche. Par exemple, si vous voulez juste des fichiers qui commencent par «Readme», essayez cette recherche:
fd --glob 'readme*'
Il s'agit toujours d'une recherche insensible à la casse, mais vous pouvez imiter le comportement par défaut de Find en utilisant l'indicateur -S pour la sensibilité de cas:
fd -gs 'readme'
Le drapeau -g est court pour –glob, tandis que -s est court pour – sensible aux cas. Cela trouvera tous les fichiers avec le nom exact «Readme» dans le répertoire actuel et tous les sous-répertoires:
Il est bon de prendre l'habitude de citer votre modèle de recherche. Cela garantit tous les caractères spéciaux – comme le * – ne vous est pas interprété par la coquille et traité comme autre chose qu'une partie de votre modèle de recherche.
Notez que les résultats incluent des fichiers dans les sous-répertoires; Le modèle GLOB s'applique uniquement au nom de fichier plutôt qu'à la trajectoire complète. Utilisez -p (–full-path) si vous souhaitez rechercher du texte dans le chemin complet de chaque fichier.
Vous pouvez utiliser Globbing pour correspondre aux noms de fichiers exacts, simplement en évitant l'utilisation de tout caractères glob. Donc l'équivalent FD de trouver -name Readme est:
fd -gs README
Regrex Recherche: trouver tous les fichiers commençant par une date
Au-delà des recherches basées sur Glob, FD peut trouver des fichiers dont les noms correspondent à une expression régulière. En fait, c'est le comportement par défaut:
fd '^..(da)+..$'
Cela trouvera tous les fichiers dont les noms contiennent deux caractères, suivis par n'importe quel nombre de lettres «D» ou «A», puis suivies de deux autres caractères. Par exemple, il localisera ce qui suit:
À ce stade, cela vaut la peine de réfléchir au comportement de la FD entourant la sensibilité de cas. Par défaut, les recherches FD ne sont ni sensibles à la cas, ni insensibles à la casse; C'est plus compliqué que ça. FD essaiera d'être intelligent à propos de votre recherche, en fonction de la présence de tout personnage majuscule.
Par exemple, fd '^ .. (da) + .. $' effectuera une recherche sensible à la casse car le motif contient au moins un caractère majuscule. Cette recherche renvoie donc un fichier nommé «Readme», mais pas un nom nommé «Readme». Inversement, fd '^ .. (da) + .. $' ne contient aucun caractères en majuscules, il effectuera une recherche insensible à la casse qui trouvera des fichiers nommés «Readme», «Readme» et «Readme».
Encore une fois, l'utilisation que vous trouvez pour des recherches plus complexes basées sur l'expression régulière dépendra de vos propres conventions de dénomination. Mais il y a aussi des utilisations pour de nombreux cas courants.
Voici un exemple qui trouvera tous les fichiers avec une extension Markdown, qui peut être «.Markdown», «.mdown» ou «.md:»
fd '.(md|mdown|markdown)$'
Trouver des fichiers avec une extension spécifique
La recherche de fichiers en fonction de leur extension est un cas si courant que FD a un mode spécial pour cela. L'option -E recherchera une extension, comme ainsi:
fd -e md
Ceci est l'équivalent de fd ' .md $' et trouvera tous les fichiers avec un nom qui se termine «.md».
Vous pouvez rechercher plusieurs extensions en répétant l'option -E, vous pouvez donc trouver tous les fichiers de démarque sans avoir à utiliser une expression régulière:
fd -e md -e mdown -e markdown
Trouver des répertoires au lieu de fichiers
Par défaut, FD trouvera tous les types de fichiers, y compris les répertoires, les liens symboliques, les exécutables et les fichiers réguliers. Vous pouvez modifier ce comportement avec l'option -T, qui nécessite l'une des lettres suivantes immédiatement après:
|
f |
Dossier régulier |
|
d |
Annuaire |
|
l |
Lien symbolique |
|
x |
Exécutable |
|
e |
Fichier |
Notez que certains d'entre eux peuvent se chevaucher: par exemple, un fichier (-f) peut également être un fichier vide (-e). Notez également que -e trouvera tous les répertoires vides qui correspondent. Si vous souhaitez rechercher plusieurs types, utilisez l'option -T plus d'une fois. Par exemple, pour trouver des répertoires et des liens symboliques:
fd -td -tl foo
Trouver des fichiers cachés en utilisant -h
Les fichiers cachés sont un autre type de fichier pris en charge FD. Par défaut, il les ignore:
Cependant, en utilisant l'option -H, vous pouvez trouver des fichiers cachés, comme les fichiers .ds_store sur macOS:
fd -H .DS_Store
Il s'agit d'une excellente option si vous souhaitez supprimer ces fichiers système inutiles, en particulier si vous souhaitez automatiser le processus.
Vous pouvez également l'utiliser pour trouver des fichiers .gitignore, qui contiennent des données sur les fichiers que GIT ne doit pas considérer comme faisant partie d'un référentiel:
fd -H .gitignore
Trouver des fichiers dans les référentiels GIT
En parlant de fichiers .gitignore, FD les utilisera pour filtrer automatiquement les fichiers ignorés. Les fichiers .gitignore sont généralement utilisés pour les fichiers générés, comme des exécutables compilés ou des documents convertis qui ne devraient pas être stockés en permanence dans le référentiel.
Cela signifie que si vous travaillez dans un référentiel vérifié, vous ne pourrez peut-être pas trouver les fichiers que vous attendez. Vous pouvez voir comment cela fonctionne avec une courte démonstration. Dans un référentiel Git, exécutez git check-ingnore Pour répertorier les fichiers qui seront ignorés:
This command pipes the output from git to grep to show just the filenames containing that text. Now, you can confirm that fd will not find this file by default:
Bien que cette recherche trouve de nombreux résultats, notez qu'aucun des fichiers ignorés de la commande précédente n'est trouvé par FD.
Par défaut, FD ne prendra en compte .gitignore que si un référentiel GIT est présent. En d'autres termes, vous aurez besoin d'un répertoire .git avec une structure valide, pas seulement d'un fichier .gitignore.
Ce comportement aura généralement du sens si vous êtes programmeur. Lorsque vous travaillez sur un référentiel, vous êtes généralement intéressé par les fichiers permanents, plutôt que ceux qui sont générés temporairement. Cependant, vous pouvez remplacer ce comportement à l'aide de l'option –No-Ignore-VCS.
Vous ne voudrez peut-être pas ce comportement par défaut, mais c'est facile à rectifier. La solution simple consiste à créer un alias avec l'option pour le désactiver, c'est-à-dire alias fd = « fd –no-insignore-vcs ».
FD vous permet également d'ignorer les modèles répertoriés dans les fichiers .ignore et .fdignore. Ce sont pour une utilisation à usage général et une utilisation spécifique au FD, respectivement.
Logique booléenne en utilisant – et pour plusieurs modèles
Si vos modèles deviennent plus compliqués, vous pouvez utiliser la logique booléenne pour les simplifier. L'option – et vous permet de rechercher des fichiers qui correspondent à plus d'un modèle. Par exemple, disons que vous utilisez la commande suivante pour trouver des fichiers qui commencent par une lettre majuscule et contiennent au moins un numéro:
fd '^(A-Z).*(0-9)+.*'
L'expression régulière est un peu gênante en raison de la nécessité de tenir compte des «autres caractères» en utilisant le modèle. *. Au lieu de cela, vous pouvez diviser les deux tests en modèles individuels en utilisant – et:
fd '^(A-Z)' --and '(0-9)+'
Cela devrait donner exactement les mêmes résultats, mais il est légèrement plus lisible et un peu plus facile à formuler.
Ou peut-être avez-vous un ensemble de fichiers comme ReadMe.2025-09-12, 2025-09-10.readme.md … Finding Fichiers avec ReadMe et une date dans l'un ou l'autre ordre peut être gênant, mais l'option – et l'option est beaucoup plus facile:
fd 'README' --and '(0-9){4}-(0-9){2}-(0-9){2}'
Trouver de nouveaux fichiers
Le programme FD peut aller au-delà de la recherche de fichiers en fonction de leur nom. Il peut également tester des fichiers en fonction de leur propriétaire, de leur taille ou lorsqu'ils ont été modifiés pour la dernière fois. Le dernier est très utile, vous permettant de trouver «tous les fichiers modifiés la semaine dernière», par exemple:
fd
Bien sûr, vous pouvez combiner des filtres à date avec d'autres tests, alors voici une commande pour trouver tous les liens symboliques appartenant à l'utilisateur Bobby, qui ont été modifiés aujourd'hui:
fd
L'option –newer fait la même chose que – changée avec – – changeer-newer-than et – changé-après.
Énumérer tous les fichiers récursivement
Enfin, une utilisation pratique mais inattendue pour FD, dont il hérite de Find: Listing Tous les fichiers. Si vous l'exécutez sans arguments, FD répertorie tous les fichiers non inignés dans le répertoire actuel et les répertoires en dessous:
Si vous exécutez l'équivalent de recherche de cette commande (trouver .) Vous remarquerez peut-être qu'il donne des résultats très différents de la FD. Cela met en évidence le comportement par défaut de FD d'ignorer les fichiers cachés et d'autres, comme ceux répertoriés dans .gitignore. Utilisez l'option -u pour remplacer ce comportement et vous devriez obtenir le même nombre de résultats pour les deux:
Vous pouvez avoir du mal à amener FD à conserver sa sortie de couleur lorsqu'il est tué vers une autre commande. J'ai trouvé du succès avec l'option – Color et le plus de téléavertisseur, c'est-à-dire FD – Color toujours. | la plupart.
Lister des fichiers comme celui-ci peut être un moyen rapide et facile d'obtenir une idée d'un projet que vous avez cloné ou d'un package que vous avez non compressé. La mise en évidence des couleurs de FD devrait également vous aider à obtenir un aperçu de la diversité du contenu du répertoire.
