Question Comment trouver tous les fichiers css contenant # page-title sous Linux?


je connais grep -irn "#page-title" va rechercher tous les fichiers pour le texte correspondant, mais pour des raisons de performance, je voudrais limiter la recherche uniquement aux fichiers qui sont des fichiers CSS. Dans Windows PowerShell, c'est:

ls *.css -r | select-string "#page-title"

Points bonus, comment limiter cela aux fichiers qui ne sont PAS préfixés par css_


4
2017-10-27 22:12


origine




Réponses:


find -name "*.css" ! -name "css_*" | xargs grep -H "#page-title"

find est la recherche en ligne de commande unix, avec 2 jeux de paramètres. Le premier paramètre, -name "*.css", dit trouver pour rechercher des fichiers avec l'extension CSS, le ! -name "css_*" paramètre indique find pour exclure ou ignorer les fichiers qui commencent par css_. Cette liste de fichiers est ensuite redirigée vers la commande xargs, qui transmet la liste sous forme de paramètres dans la commande grep, à laquelle il est demandé de rechercher "# page-title" dans la liste et d’imprimer le nom du fichier en utilisant le -H paramètre.


6
2017-10-27 22:21



Pourriez-vous fournir des explications sur ce que fait votre code? - Tom Wijsman
@TomWijsman a ajouté des détails supplémentaires selon votre suggestion. - Roy Rico


Cela devrait faire l'affaire

grep -r --include="*.css" "#page-title" ./

4
2017-12-12 17:09



Bienvenue sur Super User. Je viens de voter votre réponse, mais cela pourrait être amélioré en ajoutant --exclude="css_*". - Anthony Geoghegan


Je viens de télécharger grepcss: https://github.com/Red-Seadog/grepcss

grepcss comprend le langage CSS, vous pouvez donc faire la commande find comme décrit ci-dessus avec

| xargs grepcss -s '#page-title'

0
2017-08-09 09:25