5 votes

Comment localiser un fichier dans Spotlight en utilisant le nom du dossier et du fichier ?

Je souhaite souvent naviguer vers un fichier ou un dossier qui n'a pas de nom unique. Au lieu de cela, le dossier parent, combiné au nom du fichier ou du dossier, le rend unique. Voici quelques exemples :

  • Je veux ouvrir readme.txt dans le dossier appelé ABC plutôt que readme.txt dans le dossier appelé CDE ou FGH .
  • Chaque année, j'enseigne une matière dans laquelle les dossiers sont organisés subjectname/2011 , subjectname/2012 , etc. Je veux pouvoir rechercher subjectname 2012 parce que 2012 n'est pas unique.

Lorsque j'entre une partie du chemin et le nom du fichier dans Spotlight, le fichier n'est pas trouvé. Spotlight ne semble pas considérer les informations relatives au chemin d'accès comme pertinentes pour la recherche.

  • Comment naviguer rapidement vers un fichier à l'aide de Spotlight lorsque son nom n'est pas unique mais que vous connaissez un mot ou une partie de mot qui apparaît dans son chemin d'accès ?
  • Existe-t-il une autre stratégie pour localiser rapidement un fichier ou un dossier à partir de son nom et d'un mot du chemin d'accès au fichier ou au dossier ?

Mise à jour, j'ai lu que Spotlight traite le chemin d'une manière particulière . Il ne peut pas être utilisé pour construire des recherches.

kMDItemPath
Complete path to the file. This value of this attribute can be retrieved, 
but can't be used in a query or to sort search results. This attribute can’t 
be used as a member of the valueListAttrs array parameter for MDQueryCreate 
or MDQueryCreateSubset.
Value Type:      CFString
Framework:       CoreServices/CoreServices.h
Header:      MDItem.h
Availability:    Available in OS X v10.4 and later.

2voto

nine9ths Points 181

Si vous vous sentez à l'aise pour ouvrir un terminal, vous pouvez exécuter la commande suivante

locate ABC/readme.txt

et il vous donnera le chemin d'accès complet à tous les fichiers de votre machine qui sont nommés readme.txt dans un dossier nommé ABC.

Pendant que vous y êtes, vous pouvez copier et coller le chemin comme argument à la commande open et il l'ouvrira pour vous.

Pour aller plus loin, vous pouvez utiliser la sortie de locate comme arguments pour open avec xargs

locate ABC/readme.txt | xargs open

Ouvre tous les fichiers contenant ABC/readme.txt sur votre machine, comme si vous aviez double-cliqué dessus.

2voto

billdehaan Points 789

Je cherche la même chose depuis de nombreuses années. Je sais qu'il y a des tonnes d'outils de ligne de commande créatifs, mais je voulais quelque chose qui remplace Spotlight, surtout depuis que Spotlight est devenu encore pire dans Big Sur. Je suis finalement tombé sur GoToFile qui semble faire exactement ce que vous demandez !

1voto

Jeromy Anglim Points 1848

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é 2012subjectname 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.

1voto

Byron Points 46

Vous pouvez consulter Point de repère . Findspot prend en charge la recherche par chemin complet, ce qui vous permet d'inclure le nom du dossier et le nom du fichier dans votre requête.

Voici une capture d'écran de Findspot utilisant votre exemple :

enter image description here

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X