Merci à @nine9ths d'avoir signalé la présence de la locate
en tant qu'option. Voici quelques observations supplémentaires.
Correspondance partielle et termes de recherche multiples
J'ai souvent des dossiers dont je ne me souviens que partiellement des noms de fichiers et de dossiers. De plus, ces dossiers ne se trouvent pas nécessairement dans le dossier parent immédiat (il peut s'agir du parent du dossier parent). Une façon d'effectuer une recherche de correspondance partielle de type booléen consiste à combiner les éléments suivants : piped grep
commandes. Par exemple :
locate AB | grep readme
serait le tuyau ( |
) tous les chemins qui correspondent à AB dans grep
. Les chemins restants correspondraient également à readme
. Cela correspondrait donc à ABC/foo/readme.txt
, ABC/foo/readme.md
y ABC/readme.txt
.
Recherche insensible à la casse
La recherche Spotlight semble ne pas tenir compte de la casse, ce qui semble généralement pratique. Pour le même comportement avec locate
y grep
utiliser le -i
drapeau.
locate -i AB | grep -i readme
grep
peuvent être appliquées à plusieurs reprises pour filtrer davantage les résultats.
Sélection d'un chemin dans une liste
Dans certains cas, même après plusieurs recherches, je constate qu'il me reste une poignée de correspondances et que je veux simplement en sélectionner une dans la liste. Il existe plusieurs façons de sélectionner une seule ligne par numéro. Voici quelques options pour sélectionner, par exemple, la ligne 4 d'une liste de chemins d'accès à partir d'un fichier locate search
locate AB | grep readme | awk 'NR==4'
Ouvrir un chemin sélectionné
Comme le note @nineths, une fois qu'un fichier unique est obtenu, la sortie peut être ouverte avec une application par défaut :
locate foo | xargs open
ou avec un programme spécifié sur le chemin d'accès tel que Vim
locate foo | xargs mvim
xargs
ne fonctionne pas, du moins par défaut, si le chemin d'accès comprend un espace. Une autre option consiste à envoyer le chemin d'accès dans le presse-papiers et à le coller quelque part (par exemple, dans une recherche Alfred ou dans une boîte de dialogue "Aller au dossier" du Finder).
locate foo | pbcopy
Alternative à la sélection et à l'ouverture en ligne de commande
Il existe probablement plusieurs alternatives à l'utilisation de la ligne de commande pour sélectionner et ouvrir un chemin dans la liste des chemins renvoyés.
- Dans iTerm2, le fait de maintenir la touche de commande et de cliquer sur un URL ou un chemin de fichier/dossier ouvrira l'URL ou le fichier dans l'application par défaut.
Personnalisation de la localisation
Le présent tutoriel de Geek Stuff aborde les différentes personnalisations de l'outil locate
(par exemple, filtrer certains répertoires et types de fichiers).
Possibilité d'utiliser mdfind à la place
En général, tous les exemples utilisant locate ci-dessus pourraient être remplacés par mdfind
. locate
renvoie généralement à des fichiers système supplémentaires, alors que mdfind
accède aux fichiers indexés par Spotlight. mdfind
est insensible à la casse par défaut, ce que je trouve généralement pratique. mdfind
dispose également d'options de recherche supplémentaires, par exemple, vous pouvez ajouter kind:fol
pour les dossiers. La principale différence est que mdfind
ne recherche que le nom du fichier. Par conséquent, si les informations relatives au chemin d'accès sont utilisées pour limiter la recherche, elles doivent figurer dans le message suivant, intitulé "Piped". grep
des filtres.
Par exemple, si je veux trouver un dossier appelé 2012
où subjectname
apparaît dans le chemin d'accès, ce qui suit fonctionnerait
mdfind name:2012 kind:fol | grep subjectname
Il convient de noter que name:
semblait être nécessaire car le texte ne comportait que des chiffres.
Résumé des réflexions
-
Vitesse : Le
locate
s'exécute plus rapidement que la commande find
mais à une vitesse similaire à celle de la commande mdfind
.
-
Possibilité de filtrer : Si vous avez des informations à faire correspondre partiellement au nom du fichier ou si vous souhaitez utiliser des outils de recherche supplémentaires
mdfind
semble meilleur (en supposant que le fichier soit indexé par Spotlight).
En général, toutes ces approches semblent un peu fastidieuses et comportent un certain nombre de surcharges syntaxiques inutiles.