tech:find-prune
Différences
Ci-dessous, les différences entre deux révisions de la page.
| tech:find-prune [2025/03/24 15:06] – créée - modification externe 127.0.0.1 | tech:find-prune [2026/05/28 15:41] (Version actuelle) – Jean-Baptiste | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # Find prune | ||
| + | |||
| + | Trouver des prunes ou '' | ||
| + | |||
| + | C'est vrai que notre ami GNU find est efficace, rapide etc.... | ||
| + | |||
| + | Mais quand nous voulons cherchez dans une arborescence il arrive que nous souhaitons exclure des répertoires. | ||
| + | Un façon de faire est '' | ||
| + | |||
| + | Ça marche, donc où est le problème ? | ||
| + | Et bien si nous suivons ce que fait find à l'aide de la commande '' | ||
| + | |||
| + | |||
| + | Dans notre exemple, nous avons un dossier **1wpixwnr.default** dans **.thunderbird** | ||
| + | |||
| + | Et nous voulons tous les fichiers du répertoire courant sauf ceux présents dans **.thunderbird** | ||
| + | |||
| + | Ici nous constatons que find va dans **.thunderbird**, | ||
| + | |||
| + | ~~~ | ||
| + | # strace find . -not -wholename " | ||
| + | open(" | ||
| + | ~~~ | ||
| + | |||
| + | Même chose ici | ||
| + | |||
| + | ~~~bash | ||
| + | # strace find . -not -wholename " | ||
| + | open(" | ||
| + | ~~~ | ||
| + | | ||
| + | |||
| + | Alors qu' | ||
| + | |||
| + | ~~~bash | ||
| + | strace find . -wholename " | ||
| + | ~~~ | ||
| + | |||
| + | Attention cependant, ici même avec prune, il y a des accès disques inutiles | ||
| + | |||
| + | ~~~ | ||
| + | # strace find . -wholename " | ||
| + | open(" | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Notons qu'ici **.thunderbird** est inclus dans le résultat : | ||
| + | |||
| + | ~~~ | ||
| + | $ find . -wholename " | ||
| + | ./ | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | A présent comparons | ||
| + | |||
| + | |||
| + | ~~~ | ||
| + | $ time find . -not -wholename " | ||
| + | real 0m0.321s | ||
| + | user 0m0.170s | ||
| + | sys 0m0.140s | ||
| + | ~~~ | ||
| + | |||
| + | (encore une fois) | ||
| + | |||
| + | ~~~ | ||
| + | $ time find . -not -wholename " | ||
| + | real 0m0.321s | ||
| + | user 0m0.170s | ||
| + | sys 0m0.140s | ||
| + | ~~~ | ||
| + | | ||
| + | ~~~ | ||
| + | $ time find . -wholename " | ||
| + | real 0m0.138s | ||
| + | user 0m0.100s | ||
| + | sys 0m0.030s | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Alors que le résultat est identique : | ||
| + | | ||
| + | ~~~bash | ||
| + | diff <(find . -not -wholename " | ||
| + | ~~~ | ||
| + | | ||
| + | Quelques liens sur find -prune que je n'ai pas vraiment eu le temps de lire. | ||
| + | |||
| + | * < | ||
| + | * < | ||
| + | * < | ||
| + | * < | ||
| + | | ||
| + | |||
| + | |||
| + | Exemple : | ||
| + | | ||
| + | Trouvez tous les mp3 qui ne sont pas dans ./ | ||
| + | |||
| + | ~~~bash | ||
| + | find . -type f -iname " | ||
| + | ~~~ | ||
| + | | ||
| + | | ||
| + | Évidement on peut faire : | ||
| + | |||
| + | ~~~bash | ||
| + | find . -type f -iname " | ||
| + | ~~~ | ||
| + | | ||
| + | Mais dans ce cas find ira quand même dans l' | ||
| + | |||
