Vous manquez simplement le prédicat qui indique ce que vous recherchez (par exemple -name
.)
Pour rechercher dans le répertoire personnel par nom:
find ~ -name \*.pdf
Notez que le caractère générique *
doit être échappé afin que le shell ne l'interprète pas avant que find ne lui mette la main dessus. L'utilisation de '*.pdf'
et "*.pdf"
aura le même effet que \*.pdf
.
Pour rechercher sans tenir compte de la casse:
find ~ -iname \*.pdf
Pour élaguer les résultats aux fichiers uniquement (l'expression de nom s'en occupera probablement pour vous, mais juste au cas où vous auriez des répertoires aux noms étranges):
find ~ -type f -iname \*.pdf
Pour vous assurer que find suit les liens symboliques (je veux généralement le faire moi-même lorsque je fais des recherches):
find ~ -follow -type f -iname \*.pdf
Pour faire quelque chose avec les fichiers que vous avez trouvés: vous pouvez les vider dans un fichier en utilisant la redirection stdout (par exemple tack on > filename
à la fin), ou utiliser l' -exec
option pour exécuter une commande (voir la page de manuel pour plus de détails). Cependant, ce dernier exécute une commande sur chaque fichier à la fois. il est souvent plus rapide de laisser la xargs
commande passer vos fichiers trouvés comme arguments à une autre commande, en une seule fois ou en gros morceaux à la fois. Par exemple, pour les greps ad hoc (mais non indexés) via les fichiers d'en-tête:
find ~ -follow -type f -name \*.h | xargs grep -nH "identifier"
Et une dernière extension, pour que cette dernière commande fonctionne correctement si vous avez des fichiers et des répertoires avec des espaces:
find ~ -follow -type f -name \*.h -print0 | xargs -0 grep -nH "identifier"
find
est loin d'être inutile.