J'utilise Ubuntu 14.04 et j'essaie actuellement de rechercher des fichiers et des dossiers contenant "hello", "165" et "920" (dans leurs noms - pas dans les fichiers) à l'aide de la commande ci-dessous:
find . -name "hello 165 920" > /search/results/here/search20170224.txt
Lorsque je recherche une chaîne comme celle-ci dans Nemo ("bonjour 165 920"), les résultats indiqués correspondent à l'objectif recherché. Si les fichiers ou les dossiers contiennent les mots "hello 165 920" (dans un ordre donné ou entre autres textes), un résultat s'affiche.
Exemples: helloxx165xx920, hello_165-920, hello165920
Ce que je veux faire est donc tout à fait possible, mais via la commande find de la CLI, je n’obtiens que des résultats pour des correspondances parfaites.
Je ne sais pas comment faire ce type de recherche à l'aide de la commande find et je dois exécuter environ 500 de ces recherches les unes après les autres; une approche CLI est donc nécessaire pour ne pas avoir à configurer chaque recherche manuellement et à planter Nemo toutes les 5 minutes en raison de la taille et de la profondeur des recherches.
Toute aide que n'importe qui peut donner serait grandement appréciée =]
Vous devez utiliser des caractères génériques (*foo*
au lieu de foo
), plusieurs tests -name
et les combiner avec -and
:
find . -name "*hello*" -and -name '*165*' -and -name "*920*" > search20170224.txt
Si vous avez plusieurs chaînes à rechercher, vous pouvez les enregistrer dans un fichier où chaque chaîne est une colonne (séparée par un espace):
hello 165 920
goodbye 321 123
Vous pouvez ensuite parcourir le fichier et construire la requête find
:
while read a b c; do
find . -name "*$a*" -and -name "*$b*" -and -name "*$c*" > search."$a"_"$b"_"$c".txt
done