Question Comment trouver un fichier par nom de fichier dans le terminal Mac OSX?


Je veux trouver un fichier sur mon Macbook avec le nom de fichier: abc.dmg. J'ai essayé d'utiliser le projecteur, mais il ne le trouve pas. Quand j'ai essayé de trouver et utilisé: find -name abc.dmg -path /, J'ai des erreurs en arrière.

Quelle est la syntaxe appropriée pour trouver un fichier par nom de fichier avec la commande find sur un terminal Mac OSX?


74
2017-12-28 17:42


origine


@VxJasonxV Les questions d’Apple sont 100% sur le sujet pour Super User, et aucun besoin réel d’avoir chaque question d’Apple n’a été déplacé. Les questions relatives à l'iPhone ou à l'iPad seront toutefois déplacées au besoin. - BinaryMisfit
Ce n'était pas tant une raison d'être hors sujet, mais le fait qu'il existe un sujet / site plus spécifique pour ce sujet général. - VxJasonxV
@ Santiago: Y a-t-il eu des discussions à ce sujet sur meta ou chat? Je me demande simplement si AFAIK apple.SE sortira bientôt de la version bêta, alors ce serait bien de mettre tout le monde sur la même page. - Robert S Ciaccio
@calavera. Discussion assez ancienne mais pertinente peut être trouvée ici. Apple SE, Ubuntu SE et Linux SE sont là pour complimenter Super User, mais nous ne voulons en aucun cas forcer les utilisateurs à bouger. Je préfère poser mes questions Apple ici plutôt qu'Apple, car j'utilise 3 systèmes d'exploitation différents. Si j'ai une question très précise, je le poserai sur un site plus spécialisé. - BinaryMisfit


Réponses:


Dans sa forme la plus simple, find prend un paramètre: le chemin. Dans sa forme effectivement utile, il prend le chemin suivi par la réduction des critères.

Ainsi, vous voulez:

  • find (le programme)
  • / (le chemin)
  • et -name abc.dmg (le critère).

find / -name abc.dmg


110
2017-12-28 17:45



Vous pouvez obtenir des autorisations de type refusées lors de la recherche sur le lecteur entier, mais elles peuvent être ignorées à moins que vous ne vous attendiez à ce que le fichier se trouve dans un dossier restreint. Si oui, utilisez sudo trouver / nom-de-domaine abc.dmg - Chris Nava
Je l'ai essayé, mais pas de résultat. - SPRBRN
Vraisemblablement, vous n'avez pas de fichier nommé abc.dmg sur votre ordinateur. Vous pouvez utiliser -iname à la place de -name pour rendre la recherche insensible. Je doute fort que vous recherchiez réellement "abc.dmg", et étant donné que (sans doute) le fait, il est difficile de vous dire quel est votre problème sans avoir les détails réels. - VxJasonxV
@rxt: si find ne le trouve pas, ce n'est pas là ... - Robert S Ciaccio
Étant donné que le rapport OP a essayé de trouver dans le texte de la question, il convient de noter que l'ordre des arguments à find  les questions. Si doit être find [path]+ [selection, grouping, and actions]. - dmckee


find . -name '*.csv' par exemple travaillé pour moi avec des jokers. OP pourrait aussi utiliser find . -name '*.dmg' pour vérifier son répertoire actuel, en supposant qu'il était dans /.


15
2017-10-27 14:11





Vous pouvez utiliser le locate commander.

locate abc.dmg

6
2017-12-28 17:44



Noter la osx marque. slocate db ne se remplit pas par défaut. - VxJasonxV
Essayé, après avoir créé la base de données, mais aucun résultat. - SPRBRN
si locate et mdfind les deux échouent, les chances sont que le fichier n'est pas sur votre machine. Ou son pas nommé comment vous pensez que son nom. Peut-être que la recherche de tous les DMG pourrait être votre prochaine étape? - peelman


le mdfind la commande utilise la base de données Spotlight

http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html


6
2017-12-28 19:21



Mais Spotlight ne le trouve pas, conformément à la question initiale de l'OP. - VxJasonxV


Le moyen le plus simple (que je suis sûr que vous avez déjà essayé, mais bon, permettez-moi de l’ajouter au fil) est d’entrer abc.dmg dans la zone de recherche en haut à droite de chaque fenêtre de recherche, puis sélectionnez "Fichier Nom "dans les options de la barre de recherche qui apparaît.

Pas besoin du terminal.

Rappelez-vous également que Spotlight indexe uniquement les répertoires spécifiés dans le panneau de configuration de Spotlight et que abc.dmg ne se trouve peut-être pas dans l'un de ces répertoires.

Corrigez-moi si je me trompe, mais je pense que la commande find doit savoir quoi produire:

find / -name abc.dmg -print

... devrait imprimer les résultats au terminal (y compris les erreurs de permission).

Si vous ne voulez pas d'erreur de permission et que vous souhaitez rechercher d'autres répertoires utilisateur, procédez comme suit:

sudo find / -name abc.dmg -print

3
2017-12-28 22:53





Vous pouvez utiliser les fonctions de ligne de commande suivantes pour trouver et ouvrir rapidement un fichier pertinent. Je trouve cela plus facile que de taper de longues chaînes de requêtes dans la fenêtre Spotlight.

Ajouter les fonctions suivantes dans ~/.bash_aliases.

# find any item matching search query in file name
spot(){
  mdfind "kMDItemDisplayName=='*$1*'cd";
}

# restrict to files under (recursive) a specific path 
findpaper(){
    mdfind -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd";
}

# default to open the first entry unless 2nd positional argument is given
openpaper(){
    FILEID=$(printf "%sp" ${2:-1})

    open "$(mdfind -name -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd" | sed -n "${FILEID}")"

}

Maintenant, soit source ~/.bash_aliases ou ouvrez un nouveau terminal fonctions de chargement. Pour rechercher des fichiers avec des mots, tarte et 2016 n'importe où dans le nom du fichier, faites

spot pie*2016 #or
spot 2016*pie

Il n'est pas nécessaire d'ajouter ou d'ajouter * à votre requête comme motif de recherche, '*$1*' déjà des balises génériques au début et à la fin de votre requête. Additionnel cd est insensible à la casse et ignore les marques diacritiques, p. ex. fred reviendra tous les deux, Frédéric et FrEDeric.

findpaper restreindra la recherche aux résultats sous un chemin spécifique (récursif) pendant que openpaper pie*201 ouvrira un résultat de recherche (ou le premier de plusieurs résultats) ou openpaper pie*201 3 ouvrira la troisième entrée de résultat. Pour éviter d'ouvrir des scripts bash ou d'autres fichiers non-document, vous pouvez restreindre le contenu du fichier par des attributs de recherche supplémentaires. Voir Syntaxe de l'expression de la requête de métadonnées de fichier et https://ss64.com/osx/mdfind.html pour utiliser d'autres opérateurs de recherche.


1
2018-02-09 04:28