Questão Como encontrar todos os arquivos css contendo # page-title no Linux?


eu sei grep -irn "#page-title" irá procurar todos os arquivos para correspondência de texto, mas por razões de desempenho eu gostaria de limitar a pesquisa apenas para arquivos que são arquivos css. No Windows PowerShell, é:

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

Pontos de bônus, como limitar isso a arquivos que NÃO são prefixados com css_


4


origem




Respostas:


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

find é o find da linha de comando unix, com 2 conjuntos de parâmetros. O primeiro parâmetro, -name "*.css", diz ao find para procurar arquivos com a extensão CSS, o ! -name "css_*" parâmetro informa encontrar para excluir ou ignorar arquivos que começam com css_. Essa lista de arquivos é então canalizada para o comando xargs, que passa a lista como parâmetros para o comando grep, que é informado para encontrar "# page-title" na lista e imprimir o nome do arquivo, usando o comando -H parâmetro.


6



Você poderia fornecer alguma explicação sobre o que seu código faz? - Tom Wijsman
@TomWijsman adicionou detalhes adicionais por sua sugestão. - Roy Rico


Isso deve fazer o truque

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

4



Bem-vindo ao superusuário. Eu apenas upvoted sua resposta, mas poderia ser melhorado adicionando --exclude="css_*". - Anthony Geoghegan


Acabei de enviar grepcss: https://github.com/Red-Seadog/grepcss

grepcss entende a linguagem CSS, então você pode fazer o comando find como descrito acima com

| xargs grepcss -s '#page-title'

0