web-dev-qa-db-fra.com

Vous recherchez un Mac via un terminal?

existe-t-il des commandes pour rechercher votre Mac à l'aide d'un terminal? J'ai essayé d'utiliser grep pour rechercher, mais cela semble un peu insensible et rien ne se présente.

Par exemple, je voudrais taper "Fichiers grep" (un nom de dossier) et il suffit d'imprimer une ligne vierge et rien ne se passe.

20
JFW

Vous pouvez également utiliser la commande mdfind pour effectuer une recherche avec Spotlight. Plus d'infos ici .

Utilisez mdfind -name searchterm afin de récupérer des fichiers portant le nom searchterm. Utilisez mdfind searchterm pour effectuer une recherche sur le nom et le contenu du fichier.

20
reg

Si vous voulez juste trouver des fichiers avec un certain nom, utilisez find

La page de manuel peut être trouvée ICI ou en tapant man find à l'invite du terminal.

Fondamentalement, find cherchera de manière récursive un fichier répondant aux critères que vous spécifiez. L'exemple le plus simple:

find . -name file_name -print

Cela recherchera un fichier nommé "nom_fichier" commençant dans le répertoire courant et effectuant une recherche ci-dessous, puis imprimera les fichiers portant ce nom.

find ~ -name ".DS_Store" -delete

Cela va trouver tous les fichiers .DS_Store et les supprimer.

Vous pouvez rechercher par nom, regex, date. Vous pouvez agir sur le fichier de n'importe quelle manière sous Unix avec le prédicat -exec.

Vous pouvez également utiliser find comme point de départ d'un pipeline d'actions plus complexe. Exemple:

find . -type f -print | egrep -i '\.m4a$|\.mp3$'

Trouvera tous les fichiers avec les extensions .m4a ou .mp3

find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l

Vous donnera un compte de ces fichiers.

23
drewk

Si vous voulez chercher dans tout un dossier, utilisez simplement -r sur grep:

grep -r pattern folder/to/search

Avec find, vous pouvez également utiliser xargs:

find folder/to/search -name '*.txt' | xargs grep pattern

ou pour vous assurer que vous recherchez deux fichiers à la fois et que vous avez donc les noms de fichiers spécifiés:

find folder/to/search -name '*.txt' | xargs grep -n2 pattern
3
Eric Darchis

grep attend à la fois un motif et une spécification de fichier. S'il en manque un, il utilise ce qui est transmis en tant que modèle et attend que les données soient recherchées via une entrée standard.

Si vous souhaitez utiliser une spécification de fichier plus complexe, utilisez find .

find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print
2