Je suis un débutant Linux. J'ai besoin de rechercher une chaîne "teststring" dans tous les fichiers * .java sous / home / user1 / (y compris les sous-dossiers). Comment puis-je le faire sous linux via la commande shell.
Je suis un débutant Linux. J'ai besoin de rechercher une chaîne "teststring" dans tous les fichiers * .java sous / home / user1 / (y compris les sous-dossiers). Comment puis-je le faire sous linux via la commande shell.
Réponses:
La façon la plus simple est d'utiliser les fonctionnalités de GNU grep:
grep -r --include '*.java' teststring /home/user1
Si vous êtes déjà sur une autre variante Unix qui n'a pas grep GNU, voici une méthode portable:
find /home/user1 -name '*.java' -exec grep teststring {} +
grep -r teststring .
en utilisant ack vous tapez simplement:cd /home/user01 && ack --java teststring
ack --java teststring /home/user01
Je l'ai trouvé. L'afficher car cela pourrait aider quelqu'un.
find /home/user01 -name *.java | xargs grep "teststring"
Veuillez corriger s'il existe un meilleur moyen.
-print0
et -0
lorsque la tuyauterie find
dans xargs
le travail correctement avec les fichiers qui peuvent avoir des espaces ou des sauts de ligne dans leur nom:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"