J'utilise normalement ce style de commande pour exécuter grepplusieurs fichiers:
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
Cela permet en réalité de répertorier tous les fichiers du système, puis de les exécuter grepavec les arguments donnés et le nom de chaque fichier.
L' -xdevargument indique à find qu'il doit ignorer les autres systèmes de fichiers, ce qui permet d'éviter des systèmes de fichiers spéciaux tels que /proc. Cependant, il ignorera également les systèmes de fichiers normaux. Ainsi, si, par exemple, votre dossier / home est sur une partition différente, la recherche ne sera pas effectuée, vous devrez le préciser find / /home -xdev ....
-type fsignifie que la recherche de fichiers uniquement, ainsi les répertoires, les périphériques et autres fichiers spéciaux sont ignorés (il restera toujours dans les répertoires et sera exécuté grepsur les fichiers qu'il contient - il ne sera tout simplement pas exécuté grepsur le répertoire lui-même, ce qui ne fonctionnerait pas de toute façon). Et l' -Hoption lui grepdit de toujours imprimer le nom du fichier dans sa sortie.
findaccepte toutes sortes d’options pour filtrer la liste des fichiers. Par exemple, -name '*.txt'traite uniquement les fichiers se terminant par .txt. -size -2Msignifie que les fichiers sont plus petits que 2 mégaoctets. -mtime -5signifie les fichiers modifiés au cours des cinq derniers jours. Joignez-les avec -a pour et et -o pour ou , et utilisez des '('parenthèses ')'pour regrouper les expressions (entre guillemets pour empêcher le shell de les interpréter). Donc par exemple:
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
Consultez man findla liste complète des filtres possibles.
Permission deniederreurs? L'avez-vous exécuté en tant qu'utilisateur root ou utilisateur normal?