web-dev-qa-db-fra.com

Erreur: "grep: liste d'arguments trop longue"

J'essaie d'exécuter la commande suivante, mais obtient une erreur d'argument trop longue. Pouvez-vous m'aider?.

Host# grep -rl 'pattern' /home/*/public_html/*
-bash: /bin/grep: Argument list too long

Existe-t-il un moyen de remplacer cette erreur et de grep les fichiers de correspondance de motifs que je veux dans le répertoire public_html de tous les utilisateurs. Il y a environ 500+ utilisateurs sur le même serveur.

14
John

Utilisez find

find /home/*/public_html -type f -exec grep -l 'pattern' {} +

Le + le modificateur permet de regrouper les noms de fichiers en morceaux gérables.

Cependant, vous pouvez le faire avec grep -r. Les arguments doivent être les noms de répertoires, pas les noms de fichiers.

grep -rl 'pattern' /home/*/public_html

Cela contiendra seulement 500+ arguments, pas des milliers de noms de fichiers.

33
Barmar