web-dev-qa-db-fra.com

Comment rechercher à la fois dans le nom de fichier (find) et dans le fichier (grep) en utilisant une seule ligne de code?

Je suis presque sûr d'avoir déjà fait cela par le passé (et qu'une réponse est donnée quelque part), mais je ne m'en souviens pas pour le moment.

Je cherche un one-liner pour rechercher (et renvoyer/écho) correspond à la fois dans le nom du fichier et le fichier.


Le plus simple serait probablement de lancer grep et find séparément les uns à la suite des autres; mais je préférerais un one-liner ...

... sauf si cela était possible avec un point-virgule (?) ou autre pour exécuter ces outils de manière séquentielle.


Je ne pense pas que la solution que je recherche implique une tuyauterie | parce que, pour emprunter de théorie des ensembles , je suis intéressé par le union des deux ensembles A et B (A ∪ B), plutôt que leur intersection (A ∩ B).

3
nutty about natty

Vous avez raison - vous pouvez utiliser le point-virgule pour exécuter la liste de commandes de manière séquentielle:

$ find . -name 'test'; grep test *

Vous pouvez également le grouper pour qu'il s'exécute en une seule commande: http://www.gnu.org/software/bash/manual/html_node/Command-Grouping.html

2
Nykakin

Essayez ceci dans votre terminal (CTRL+ALT+T)

find <here your starting string > -type f -exec grep -l <here place the part of file name> {} \;

Description de la commande ci-dessus:

find snow -type f -> trouver tous les fichiers à partir de la neige. find .... -exec -> pour chaque élément trouvé, exécutez la commande suivante. Où vous placez normalement le nom de fichier dans votre commande, mettez {}. grep -l "String" something -> renvoie le nom du fichier si la chaîne "String" est trouvée dans le fichier.

Crédit: dbasupport.com

1
rɑːdʒɑ