[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Commande find



On Fri, 21 Jan 2011 08:16:15 +0100, Fabien LUCE <ftg@lutix.org> wrote:
> Bonjour à tous!
Salut à toi !
 
> 
> 2 petites questions à propos de la commande find.
> 
> 1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas
> comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le
> paramètre d'action print0 doit il toujours etre à la fin de la commande?
Si
> oui, pourquoi?
Le paramètre -print0 (ou -print, ou -ls) est considéré par find comme un
paramètre normal de son expression conditionnelle, si ce n'est qu'il est
toujours évalué à "vrai" -> tout est traité dans l'ordre où cela est écrit.
Donc si -print0 apparaît avant -mtime, les noms des fichiers sont affichés
avant que le filtre ne s'applique.

> 2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime
> +7) sans être embêté par les noms de fichiers comprenant des espaces? le
> print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est
> inutile...
Ben avec un simple -print tu auras un nom de fichier par ligne, avec tous
tes espaces. Après tout dépend de la façon dont tu vas traiter le contenu
de la variable liste_fichier.
Sinon tu peux aussi prendre -print0, replacer le séparateur (caractère
NULL) par ce que tu veux et jouer avec IFS :
liste_fichier=$(find / -name "*test*" -mtime +7 | tr '\000' '|')
IFS='|' ; for f in $liste_fichier ; do echo $f ; done

> Merci, à bientôt! 
De rien et A+
Jean-Jacques



Reply to: