Je dois rechercher des fichiers commençant par un nom particulier. Il peut y avoir plusieurs fichiers commençant par un motif particulier et je veux lister tous ces fichiers présents dans le répertoire.
Réponses
Trop de publicités?Pour compléter les réponses existantes :
ls
L'utilitaire de liste de répertoire par défaut ls
peut être utilisé en combinaison avec les caractères génériques du Shell . Pour rechercher tous les fichiers avec le motif abc
:
ls -d abc* # list all files starting with abc---
ls -d *abc* # list all files containing --abc--
ls -d *abc # list all files ending with --abc
Notez que l'extension du fichier est également pertinente pour les résultats de la recherche.
tree
Dans le cas où nous avons besoin de lister les fichiers dans une arborescence de répertoires, nous pouvons également utiliser la commande suivante tree
pour rechercher un motif comme :
tree -P 'abc*' # list directory tree of file starting with abc---
tree -l 'def*' # exclude files starting with def---
Dans ce cas, tree
prend lui-même en charge les caractères génériques.
Vous pouvez utiliser find
pour rechercher des fichiers avec un motif
find . -type f -name "abc*"
La commande ci-dessus recherchera le fichier qui commence par abc dans le répertoire de travail actuel.
-name 'abc'
listera les fichiers qui correspondent exactement. Ex : abc
Vous pouvez également utiliser
-iname
-regex
option avec find
pour rechercher un nom de fichier à l'aide d'un modèle
Il existe de nombreuses façons de le faire, en fonction de ce que vous voulez exactement faire avec eux. En général, si vous voulez simplement les lister, vous pouvez le faire dans un terminal en utilisant :
find | grep '^\./ABC'
... et remplaçant ABC
avec votre texte.
Pour comprendre la commande, décomposons-la un peu :
-
find
liste tous les fichiers sous le répertoire courant et ses sous-répertoires ; l'utiliser seul ne fera que lister tout ce qui s'y trouve. Notez quefind
produit chaque fichier ou répertoire commençant par./
indiquant que leur chemin est relatif au répertoire courant. Il est important d'en être conscient car cela signifie que nous rechercherons les résultats commençant par./ABC
et pas seulementABC
. -
Le caractère pipe
|
redirige la sortie d'une commande vers une autre, dans ce cas la sortie defind
est redirigé versgrep
. C'est ce qu'on appelle la tuyauterie. -
grep
prend la sortie et la filtre en utilisant le motif donné,^\./ABC
.- Remarquez que le motif est cité entre guillemets simples
' '
pour empêcher le Shell d'interpréter les caractères spéciaux qu'il contient.
- Remarquez que le motif est cité entre guillemets simples
-
Maintenant, le motif lui-même est écrit dans une syntaxe particulière appelée expression régulière ou regex pour faire court. Regex est un outil de recherche extrêmement puissant si vous le maîtrisez, et il existe des sites tels que este qui vous l'apprendront plus en profondeur, mais notez que
grep
n'est pas un moteur de regex à part entière et vous ne pouvez pas tout faire avec lui. -
Pour notre objectif :
-
^
dans l'expression rationnelle correspond au début de la chaîne de caractères ; cela l'empêche de correspondre au motif s'il n'apparaît pas au début du nom du fichier. -
.
dans les regex a également une signification spéciale : il signifie "correspondre à n'importe quel caractère unique ici". Si vous voulez l'utiliser comme un point littéral, vous devez l'"échapper" en utilisant une barre oblique inverse.\
avant elle. (Oui, faire correspondre n'importe quel caractère serait inoffensif dans notre cas, mais je l'ai fait par souci d'exhaustivité).
-
Vous pouvez rechercher un motif particulier à l'aide du gestionnaire de fichiers Nautilus et des expressions régulières.
Pour ce faire, cliquez sur Sélectionner les éléments qui correspondent dans le menu Gear comme ci-dessous (vous pouvez également appuyer sur Ctrl + s ).
Ensuite, il suffit de taper le expression régulière ABC*
et valider.
Chaque fichier dont le nom correspond à votre modèle sera automatiquement sélectionné.
J'utilise Nautilus 3.6.* à partir de GNOME3 PPA sur Ubuntu 12.10 (Quantal).
- Réponses précédentes
- Plus de réponses