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).
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
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