J'utilise normalement ce style de commande pour exécuter grep
plusieurs 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 grep
avec les arguments donnés et le nom de chaque fichier.
L' -xdev
argument 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 f
signifie 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é grep
sur les fichiers qu'il contient - il ne sera tout simplement pas exécuté grep
sur le répertoire lui-même, ce qui ne fonctionnerait pas de toute façon). Et l' -H
option lui grep
dit de toujours imprimer le nom du fichier dans sa sortie.
find
accepte toutes sortes d’options pour filtrer la liste des fichiers. Par exemple, -name '*.txt'
traite uniquement les fichiers se terminant par .txt. -size -2M
signifie que les fichiers sont plus petits que 2 mégaoctets. -mtime -5
signifie 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 find
la liste complète des filtres possibles.
Permission denied
erreurs? L'avez-vous exécuté en tant qu'utilisateur root ou utilisateur normal?