Recherche Linux dans des files et sous-directorys

Il faut un script / command qui répertorie tous les files .php qui ont un motif / string.

Il devrait regarder le directory actuel et tous les sous-directorys.

Soyez encore mieux s'il montre le numéro de ligne comme suit:

my new command ./www/index.php Line 12 ./www/lib/config.php Line 123 

Aussi serait-il possible de faire une search et replace pour la ligne dans chaque file qui a ce model?

6 Solutions collect form web for “Recherche Linux dans des files et sous-directorys”

grep peut faire cela sur ses propres:

 grep -rn --include='*.php' "pattern" . 

find . -name '* .php' -print0 | xargs -0 grep -n "pattern"

Je pense que ce qui suit fera la search et le rlocation, mais assurez-vous de tester ceci en premier parce que je n'ai pas 🙂

 find . -type f -name '*.php' -print0 | xargs -0 sed -i '.bak' -e 's/foo/bar/g' 

Cela sauvegardera chaque file avant de l'éditer en créant des files de file.php.bak, et il va mettre à jour les horodatages sur tous les files. Il remplace 'foo' par 'bar'. Cela devrait également être sécurisé pour les noms de files avec des espaces.

find . -name '*.php' |xargs -I{} perl -i.bak -pe 's/pattern/replacement/' {}

Cela permet de find tous les files php. Xargs exécute alors la command pour chaque input sur STDIN passant la valeur comme {} . Alors Perl lit dans le file, le renomme avec l'extension .bak et exécute l'expression Perl sur chaque ligne du file.

Est-ce que cela ne fera pas pour replace le model?

find . -name "* .php" -exec sed -i ".bak" 's / pattern / replace / g' {} \;

Très dangereux cependant! Assurez-vous de garder le motif unique. 🙂

Utilisez ack, mieux que grep .

Avantages (pour plus d'informations, voir les 10 meilleures raisons d'utiliser ack au lieu de grep):

  • Recherches récursives par défaut
  • Peut reconnaître des sets de files communs (-php) pour searchr uniquement des files php par exemple
  • Supporte les regex de style Perl car c'est en fait un Perl pur.
  • Coloré par défaut

Pour les opérations de rlocation, vous pouvez utiliser ack en combinaison avec perl ou sed.

  • Exécuter un script d'ouverture de session pour le groupe d'users pour le server de domaine
  • Comment rendre un script php accessible depuis plusieurs ips sur centos?
  • Vous searchz la list de tous les files / dirs ignorés par rsyncs exclure le file
  • Rejouez les journaux créés par script?
  • Méthodes alternatives de détection de Linux pour détecter un hôte embarrassé
  • Quelle est une bonne façon de déployer des scripts partagés dans un environnement Linux / Unix?
  • script de démarrage de l'ordinateur rapportant le succès d'un server
  • Comment faire des actions pour chaque file dans un dossier?
  • Surveillance de la performance à distance pour Solaris et Windows
  • Un script de vulnérabilité peut-il rompre mes servers?
  • Trojan de Web-server
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de réseau.