Man page - find(1)
Packages contains this manual
Available languages:
en fr pt_BR pl nl ja uk ru zh_TW zh_CN deManual
FIND
NOMSYNOPSIS
DESCRIPTION
OPTIONS
EXPRESSIONS
OPTIONS DE POSITION
OPTIONS GLOBALES
TESTS
ACTIONS
OPĂRATEURS
NOMS DE FICHIERS PEU COURANTS
CONFORMITĂ AUX STANDARDS
VARIABLES DâENVIRONNEMENT
EXEMPLES
Approche simple de « find|xargs »
Approche plus sûre de « find -print0 | xargs -0 »
Traitement de points de départ arbitraires
Exécuter une commande pour chaque fichier
Explorer une fois le systÚme de fichiers - pour deux actions différentes
Rechercher des fichiers par leur Ăąge
Rechercher les fichiers par leurs permissions
DĂ©couper â omettre des fichiers et des sous-rĂ©pertoires
Autres exemples utiles
CODE DE RETOUR
HISTORIQUE
COMPATIBILITĂ
FAUX BOGUES
Surprises avec la prĂ©cĂ©dence dâun opĂ©rateur
Message dâerreur âpaths must precede expressionâ
BOGUES
SIGNALER DES BOGUES
COPYRIGHT
VOIR AUSSI
TRADUCTION
NOM
find â Rechercher des fichiers dans une hiĂ©rarchie de rĂ©pertoires
SYNOPSIS
find [ -H ] [ -L ] [ -P ] [ -D options_débogage ] [ -O niveau ] [ point-départ ...] [ expression ]
DESCRIPTION
Cette page de manuel documente la version GNU de find . GNU find parcourt les arborescences des rĂ©pertoires ayant pour racine chaque point de dĂ©part donnĂ© en Ă©valuant lâexpression de gauche Ă droite, en suivant les rĂšgles de prioritĂ© dĂ©crites dans la section OPĂRATEURS, jusquâĂ lâobtention du rĂ©sultat (par exemple la partie gauche est fausse pour un opĂ©rateur et , vraie pour un opĂ©rateur ou ), puis find passe au nom de fichier suivant. Si aucun point de dĂ©part nâest spĂ©cifiĂ©, « . » est prĂ©sumĂ©.
Si vous utilisez find dans un environnement dans lequel la sĂ©curitĂ© est importante (si vous lâutilisez par exemple pour faire des recherches dans des rĂ©pertoires qui sont accessibles en Ă©criture Ă dâautres utilisateurs), vous devriez lire le chapitre « Security Considerations » de la documentation de findutils qui sâappelle Finding Files et qui est fournie par findutils . Ce document contient bien plus de dĂ©tails et dâexplications que cette page de manuel et peut donc ĂȘtre considĂ©rĂ© comme une source dâinformations plus utile.
OPTIONS
Les options -H , -L et -P contrĂŽlent le traitement des liens symboliques. Les paramĂštres de la ligne de commande qui les suivent sont considĂ©rĂ©s comme des fichiers ou des rĂ©pertoires Ă examiner et ce jusquâau premier paramĂštre qui commence par « - », « ( » ou « ! ». Ce paramĂštre et tous ceux qui suivent sont considĂ©rĂ©s comme dĂ©crivant ce qui doit ĂȘtre recherchĂ©. Si aucun chemin nâest prĂ©cisĂ©, câest le rĂ©pertoire courant qui est utilisĂ©. Si aucune expression nâest donnĂ©e, câest lâexpression -print qui est utilisĂ©e (quoi quâil en soit, vous devriez plutĂŽt utiliser -print0 ).
Cette page de manuel dĂ©crit les « options » contenues dans la liste dâexpressions. Ces options contrĂŽlent le comportement de find , mais sont indiquĂ©es immĂ©diatement aprĂšs le dernier chemin. Les cinq options « rĂ©elles » -H , -L , -P , -D et -O doivent ĂȘtre saisies avant le premier chemin, le cas Ă©chĂ©ant. Un double tiret -- pourra ĂȘtre utilisĂ© afin dâindiquer que les arguments restants ne sont pas des options, mais cela ne fonctionne pas vraiment vu la maniĂšre dont find dĂ©termine la fin de la suite de paramĂštres de chemin : il le fait en lisant jusquâĂ ce quâun paramĂštre dâexpression nâarrive (qui commence aussi par un « - »). Maintenant, si un paramĂštre de chemin commence par un « - », find le traiterait plutĂŽt comme un paramĂštre dâexpression. Ainsi, pour sâassurer que tous les points de dĂ©part sont considĂ©rĂ©s comme tels, et surtout pour empĂȘcher que des motifs de joker dĂ©veloppĂ©s par lâinterprĂ©teur appelant ne soient malencontreusement traitĂ©s comme des paramĂštres dâexpression, il est en gĂ©nĂ©ral plus sĂ»r de faire commencer les chemins de recherche douteux ou les jokers par « ./ » ou dâutiliser un chemin absolu commençant par un « / ». Autrement, il est gĂ©nĂ©ralement sĂ»r, bien que non portable, dâutiliser lâoption GNU -files0-from pour passer des points de dĂ©part arbitraires Ă find .
|
-P |
Ne jamais suivre les liens symboliques. Câest le comportement par dĂ©faut. Quand find analyse ou affiche les informations concernant des fichiers, et quand le fichier est un lien symbolique, les informations utilisĂ©es sont celles qui concernent les propriĂ©tĂ©s du lien symbolique lui-mĂȘme. |
||
|
-L |
Suivre les liens symboliques. Quand find analyse ou affiche les informations concernant un fichier, ce sont celles extraites des caractĂ©ristiques du fichier vers lequel mĂšne les liens et non celle du lien lui-mĂȘme (sauf sâil sâagit dâun lien cassĂ©, ou si find est incapable dâanalyser le fichier vers lequel pointe le lien). Lâutilisation de cette option implique -noleaf qui sera toujours active pour les utilisations ultĂ©rieures de lâoption -P . Si lâoption -L est active et que find dĂ©couvre un lien symbolique vers un sous-rĂ©pertoire lors de ses recherches, le sous-rĂ©pertoire pointĂ© par le lien symbolique sera examinĂ©. |
Quand lâoption -L est active, le prĂ©dicat -type correspondra toujours au type du fichier pointĂ© par le lien symbolique plutĂŽt que celui du lien lui-mĂȘme (sauf si le lien symbolique est cassĂ©). Les actions qui peuvent casser des liens symboliques pendant lâexĂ©cution de find (par exemple -delete ) peuvent aboutir Ă des comportements perturbants. Lâutilisation de -L fait toujours renvoyer faux Ă -lname et -ilname .
|
-H |
Ne pas suivre les liens symboliques, sauf pour le traitement des paramĂštres de la ligne de commande. Quand find analyse ou affiche les informations concernant un fichier, celles qui sont utilisĂ©es viennent des propriĂ©tĂ©s du lien symbolique lui-mĂȘme. La seule exception Ă ce comportement est lorsquâun fichier indiquĂ© sur la ligne de commande est lui-mĂȘme un lien symbolique, et que ce lien peut ĂȘtre rĂ©solu. Dans ce cas, les informations traitĂ©es sont celles du fichier pointĂ© par le lien (autrement dit, le lien est suivi). Les informations concernant le lien lui-mĂȘme sont utilisĂ©es en dernier recours, si le fichier pointĂ© par le lien symbolique ne peut pas ĂȘtre analysĂ©. Si lâoption -H est active et que lâun des liens indiquĂ©s sur la ligne de commande est un lien symbolique pointant vers un rĂ©pertoire, le contenu de ce rĂ©pertoire sera analysĂ© (sachant bien sĂ»r que lâoption -maxdepth 0 lâen empĂȘcherait). |
Si plus dâune option parmi -H , -L ou -P est indiquĂ©e, chacune Ă©crase les prĂ©cĂ©dentes et câest la derniĂšre qui apparaĂźt sur la ligne de commande qui prime sur les autres. Puisque câest lâoption par dĂ©faut, on considĂšre que câest -P qui est active, Ă moins que -H ou -L ne soient utilisĂ©es.
La version find du GNU Ă©value souvent des fichiers pendant lâanalyse de la ligne de commande, et ce avant quâune recherche nâait commencĂ©. Ces options modifient aussi la façon dont les paramĂštres sont traitĂ©s. Plus prĂ©cisĂ©ment, il existe un certain nombre de tests qui comparent les fichiers listĂ©s sur la ligne de commande et le fichier en cours dâanalyse. Dans tous les cas de figure, un fichier de la ligne de commande aura Ă©tĂ© analysĂ© et certaines de ses caractĂ©ristiques auront Ă©tĂ© mĂ©morisĂ©es. Si le fichier indiquĂ© est en fait un lien symbolique, et que lâoption -P est active (ou que ni -H ni -L nâont Ă©tĂ© prĂ©cisĂ©es), alors lâinformation qui sera utilisĂ©e pour les comparaisons sera extraite des propriĂ©tĂ©s du lien symbolique. Sinon, elle sera extraite des propriĂ©tĂ©s du fichier pointĂ© par le lien. Si find ne peut suivre le lien (soit parce ce quâil ne dispose pas des privilĂšges suffisants, soit parce que le lien pointe vers un fichier inexistant), alors ce sont les propriĂ©tĂ©s du lien lui-mĂȘme qui seront utilisĂ©es.
Quand les options -H ou -L sont actives, tout lien symbolique donnĂ© comme paramĂštre Ă -newer sera dĂ©rĂ©fĂ©rencĂ©, et lâhorodatage utilisĂ© sera celui du fichier pointĂ© par le lien symbolique. Cela sâapplique de la mĂȘme façon Ă -newerXY , -anewer et -cnewer .
Lâoption
-follow
a le mĂȘme effet que
-L
, sauf
quâelle agit Ă lâendroit oĂč elle
apparaĂźt (câest-Ă -dire que si
-L
nâest pas utilisĂ©e et que
-follow
lâest, tout lien symbolique qui apparaĂźt sur la
ligne de commande aprĂšs
-follow
sera
déréférencé et ceux apparaissant
avant ne le seront pas).
-D
options_débogage
Afficher des informations de diagnostic, ce qui peut ĂȘtre pratique pour analyser pourquoi find ne fait pas ce que vous lui demandez. La liste des options de dĂ©bogage devra utiliser des virgules comme sĂ©parateurs. La compatibilitĂ© des options de dĂ©bogage nâest pas garantie au fil des versions de findutils . La sortie de find -D help permet dâobtenir la liste complĂšte des options reconnues. Les options de dĂ©bogage autorisĂ©es comprennent
|
exec |
Afficher des informations de diagnostic liées à -exec , -execdir , -ok et -okdir |
||
|
opt |
Afficher des informations de diagnostic liĂ©es Ă lâoptimisation de lâarbre de lâexpression (voir lâoption -O ). |
||
|
rates |
Afficher un rĂ©sumĂ© indiquant le nombre de succĂšs ou dâĂ©checs de chacun des prĂ©dicats. |
||
|
search |
Naviguer dans lâarborescence du rĂ©pertoire de maniĂšre bavarde. |
||
|
stat |
Afficher des messages dĂšs que des fichiers sont examinĂ©s Ă lâaide des appels systĂšme stat et lstat . Le programme find tente de limiter ce type dâappels. |
||
|
tree |
Afficher lâarbre de lâexpression dans sa forme dâorigine et sa forme optimisĂ©e. |
||
|
all |
Activer toutes les autres options de débogage (sauf help ). |
||
|
help |
Décrire les options de débogage. |
-O niveau
Activer lâoptimisation des requĂȘtes. Le programme find rĂ©organise lâordre des tests afin dâen accĂ©lĂ©rer lâexĂ©cution tout en prĂ©servant le rĂ©sultat exact, câest-Ă -dire en Ă©vitant de modifier ceux qui ont des effets de bord. Les optimisations rĂ©alisĂ©es Ă chacun des niveaux sont les suivantes.
|
0 |
Ăquivalent au niveau 1 dâoptimisation. |
||
|
1 |
Niveau dâoptimisation par dĂ©faut. Il correspond au comportement habituel. Les expressions sont rĂ©organisĂ©es afin que les tests basĂ©s seulement sur les noms (comme -name ou -regex ) soient exĂ©cutĂ©s en premier. |
||
|
2 |
Tous les tests -type ou -xtype sont exĂ©cutĂ©s aprĂšs ceux basĂ©s uniquement sur le nom des fichiers, mais avant tous les tests qui exigent des informations stockĂ©es dans lâinĆud. Sur de nombreuses versions modernes dâUnix, les types de fichiers sont rĂ©cupĂ©rĂ©s par readdir () et sont donc plus rapides Ă Ă©valuer que ceux qui nĂ©cessitent de travailler dâabord sur le fichier. Si vous utilisez le prĂ©dicat -fstype TOTO et si vous spĂ©cifiez un type de systĂšme de fichiers TOTO non connu (Ă savoir prĂ©sent dans /etc/mtab ), au moment du dĂ©marrage de find , ce prĂ©dicat est Ă©quivalent Ă -false . |
||
|
3 |
Dans ce niveau dâoptimisation, lâoptimiseur de requĂȘtes basĂ© sur le coĂ»t total est activĂ©. Lâordre des tests est modifiĂ© afin que les tests les moins coĂ»teux (câest-Ă -dire les plus rapides) soient exĂ©cutĂ©s en premier, et les plus coĂ»teux exĂ©cutĂ©s plus tard, si besoin est. Ă lâintĂ©rieur dâun mĂȘme niveau de coĂ»t, les prĂ©dicats sont Ă©valuĂ©s plus ou moins tĂŽt selon leur probabilitĂ© de succĂšs. Avec lâopĂ©rateur -o , les prĂ©dicats qui sont susceptibles de rĂ©ussir sont Ă©valuĂ©s plus tĂŽt, et avec lâopĂ©rateur -a , ce sont ceux qui risquent dâĂ©chouer qui sont Ă©valuĂ©s plus tĂŽt. |
Lâoptimiseur basĂ© sur le coĂ»t a une idĂ©e prĂ©cise des chances de succĂšs de nâimporte quel test. Dans certains cas, cette probabilitĂ© prend en compte la nature spĂ©cifique du test (par exemple, lâestimation de succĂšs dâun -type f est supĂ©rieure Ă celle dâun -type c ). Lâoptimiseur basĂ© sur le coĂ»t est actuellement en cours dâĂ©valuation. Sâil nâamĂ©liore pas les performances de find , il sera de nouveau retirĂ©. RĂ©ciproquement, les optimisations qui sâavĂšrent fiables, robustes et efficaces pourront dans lâavenir ĂȘtre activĂ©es Ă des niveaux dâoptimisations moindres. Toutefois, le comportement par dĂ©faut (câest-Ă -dire le niveau dâoptimisation 1 ) ne sera pas modifiĂ© dans les diffĂ©rentes versions de la sĂ©rie 4.3.x. La suite de tests unitaires de findutils est exĂ©cutĂ©e sur chacun des niveaux dâoptimisation de find afin de sâassurer que le rĂ©sultat est constant.
Le rĂ©arrangement des opĂ©rations exĂ©cutĂ©es par lâoptimiseur basĂ© sur le coĂ»t peut rĂ©sulter en un changement de comportement visible par lâutilisateur. Par exemple, les prĂ©dicats -readable et -empty sont sensibles au rĂ©arrangement. Si exĂ©cutĂ©s dans lâordre -empty -readable , un message dâerreur sera affichĂ© pour les rĂ©pertoires illisibles. Si exĂ©cutĂ©s dans lâordre -readable -empty , aucun message dâerreur ne sera produit. Câest pourquoi une telle opĂ©ration de rĂ©arrangement nâest pas exĂ©cutĂ©e au niveau dâoptimisation par dĂ©faut.
EXPRESSIONS
La partie de la ligne de commande aprĂšs la liste des points de dĂ©part est lâ expression . Câest une sorte de spĂ©cification de requĂȘte dĂ©crivant ce Ă quoi correspondent les fichiers et ce quâon fait avec les fichiers trouvĂ©s. Une expression se compose dâune sĂ©quence de choses :
|
Tests |
Tests renvoie une valeur vrai ou faux, habituellement Ă partir dâune propriĂ©tĂ© dâun fichier en question. Par exemple, le test -empty nâest vrai que lorsque le fichier courant est vide. |
Actions
Les actions ont des effets de bord (tels que lâaffichage de quelque chose sur la sortie standard) et renvoient vrai ou faux selon leur rĂ©ussite. Par exemple, lâaction -print affiche le nom du fichier courant sur la sortie standard.
Options globales
Les options globales modifient la rĂ©alisation de tests et dâactions spĂ©cifiĂ©es nâimporte oĂč sur la ligne de commande. Les options globales renvoient toujours vrai. Par exemple, lâoption -depth amĂšne find Ă traverser le systĂšme de fichiers par ordre de profondeur.
Options de position
Les options de position ne modifient que les tests ou les actions qui les suivent. Les options de position renvoient toujours vrai. Par exemple, lâoption -regextype est une option de position qui spĂ©cifie le dialecte de lâexpression rationnelle intervenant plus tard sur la ligne de commande.
Opérateurs
Les opĂ©rateurs sont ajoutĂ©s aux autres Ă©lĂ©ments dans une expression. On y trouve par exemple -o (pour lâoption logique OU) et -a (pour lâoption logique ET). -a est supposĂ© quand aucun opĂ©rateur nâest spĂ©cifiĂ©.
Lâaction -print sâeffectue sur tous les fichiers pour lesquels lâexpression entiĂšre est vrai, sauf si elle contient une autre action que -prune ou -quit . Les actions qui dĂ©sactivent le -print par dĂ©faut sont -delete , -exec , -execdir , -ok , -okdir , -fls , -fprint , -fprintf , -ls , -print et -printf .
Lâaction -delete agit aussi comme une option (puisquâelle implique -depth ).
OPTIONS DE POSITION
Les options de
position renvoient toujours vrai. Elles ne concernent que
les tests qui apparaissent ensuite sur la ligne de commande.
-daystart
Mesurer les temps (avec -amin , -atime , -cmin , -ctime , -mmin , et -mtime ) depuis le dĂ©but de la journĂ©e plutĂŽt que depuis 24 heures. Cette option nâaffecte que les tests qui sont indiquĂ©s plus loin sur la ligne de commande.
-follow
ObsolĂšte, utilisez plutĂŽt lâoption -L Ă la place. DĂ©rĂ©fĂ©rence les liens symboliques. Cela implique lâoption -noleaf . Lâoption -follow nâaffecte que les tests qui apparaissent aprĂšs son apparition sur la ligne de commande. Sauf dans le cas oĂč lâoption -H ou -L est indiquĂ©e, la position de lâoption -follow change le comportement du prĂ©dicat -newer , et tout fichier donnĂ© en paramĂštre de -newer sera dĂ©rĂ©fĂ©rencĂ© sâil sâagit dâun lien symbolique. La mĂȘme remarque sâapplique Ă -newerXY , -anewer et -cnewer . De la mĂȘme façon, le prĂ©dicat -type correspondra toujours au type du fichier pointĂ© par le lien symbolique plutĂŽt quâau lien lui-mĂȘme. Les prĂ©dicats -lname et -ilname renvoient toujours faux lorsquâon utilise -follow .
-regextype type
Changer la syntaxe de lâexpression rationnelle des tests -regex et -iregex qui seront indiquĂ©s plus loin sur la ligne de commande. Pour voir les types dâexpression rationnelle connus, utilisez -regextype help . La documentation de Texinfo (voir VOIR AUSSI ) explique la signification et les diffĂ©rences entre les diffĂ©rents types dâexpression rationnelle. Si vous nâutilisez pas cette option, find se comporte comme si le type dâexpression rationnelle emacs avait Ă©tĂ© spĂ©cifiĂ©.
-warn , -nowarn
Activer ou dĂ©sactiver les messages dâavertissement. Ces messages dâavertissement concernent lâusage de la ligne de commande et non les Ă©vĂ©nements que find peut rencontrer lorsquâil explore les rĂ©pertoires. Le comportement par dĂ©faut est dâactiver -warn si lâentrĂ©e standard est un tty et -nowarn dans les autres cas. Si un message dâavertissement est produit concernant lâutilisation de la ligne de commande, lâĂ©tat de sortie de find nâest pas affectĂ©. Si la variable dâenvironnement POSIXLY_CORRECT est dĂ©finie et si -warn est utilisĂ©, rien ne dit quels messages dâavertissement seront actifs sâil y en a.
OPTIONS GLOBALES
Les options globales renvoient toujours vrai. Les options globales prennent effet mĂȘme pour les tests intervenant plus tĂŽt sur la ligne de commande. Pour Ă©viter toute confusion, les options globales devraient ĂȘtre spĂ©cifiĂ©es sur la ligne de commande aprĂšs la liste des points de dĂ©part, juste avant le premier test, une option de position ou une action. Si vous spĂ©cifiez une option globale ailleurs, find produira un message dâavertissement pour dire que cela peut entraĂźner des confusions.
Les options globales interviennent aprĂšs la liste des points de dĂ©part, elles sont dâun autre type que des options comme -L .
|
-d |
Un synonyme de -depth , dans un but de compatibilité avec FreeBSD, NetBSD, MacOS X et OpenBSD. |
||
|
-depth |
Traiter dâabord les sous-rĂ©pertoires avant le rĂ©pertoire lui-mĂȘme. Lâaction -delete implique aussi -depth . |
-files0-from fichier
Lire les points de dĂ©part Ă partir de fichier au lieu de lâobtenir sur la ligne de commande. Contrairement aux limites connues de passer des points de dĂ©part au moyen dâarguments sur la ligne de commande, Ă savoir la limitation du nombre de noms de fichier, et lâambiguĂŻtĂ© inhĂ©rente de noms de fichiers en conflit avec des noms dâoption, lâutilisation de cette option permet des passer sans risque un nombre arbitraire de points de dĂ©part Ă find .
Utiliser cette option et passer les points de dĂ©part en ligne de commande sâexcluent mutuellement et cela nâest donc pas permis en mĂȘme temps.
Lâargument fichier est obligatoire. Il est possible dâutiliser -files0-from - pour lire la liste des points de dĂ©part Ă partir du flux de lâ entrĂ©e standard , et par exemple dâun tube. Dans ce cas, les actions -ok et -okdir ne sont pas permises parce quâelles interfĂ©reraient de façon Ă©vidente avec la lecture Ă partir de lâ entrĂ©e standard afin dâobtenir une confirmation de lâutilisateur.
Les points de dĂ©part dans fichier doivent ĂȘtre sĂ©parĂ©s par des caractĂšres ASCII NULL. Deux caractĂšres NULL successifs, par exemple un point de dĂ©part avec un nom de fichier de longueur nulle ne sont pas permis et mĂšneront Ă une erreur de diagnostic suivie dâun code dâerreur diffĂ©rent de zĂ©ro.
Dans le cas oĂč le fichier donnĂ© en argument est vide, find ne traite aucun point de dĂ©part et donc quittera immĂ©diatement aprĂšs lâanalyse des arguments du programme. Câest diffĂ©rent de lâinvocation standard oĂč find considĂšre le rĂ©pertoire actuel comme point de dĂ©part si aucun argument de chemin nâest passĂ©.
Sinon, le traitement des points de dĂ©part est comme dâhabitude, par exemple find parcourra de façon rĂ©cursive les sous-rĂ©pertoires sauf indication contraire. Pour ne traiter que les points de dĂ©part, il est possible de passer lâargument -maxdepth 0 en plus.
Remarques supplĂ©mentaires : si un fichier est listĂ© plus dâune fois dans le fichier dâentrĂ©e, il nâest pas prĂ©cisĂ© sâil est visitĂ© plus dâune fois. Si le fichier est dĂ©placĂ© pendant le fonctionnement de find , le rĂ©sultat nâest pas prĂ©cisĂ© non plus. Enfin, la position de la recherche Ă lâintĂ©rieur du fichier nommĂ© au moment oĂč find quitte, que se soit avec la commande quit ou de nâimporte quelle maniĂšre, nâest pas non plus prĂ©cisĂ©e. Par « non prĂ©cisé », on entend ici que cela peut fonctionner ou non, ou faire quelque chose de particulier et que le comportement peut changer dâune plateforme Ă lâautre ou selon la version de findutils .
-help , --help
Afficher un message dâaide concernant lâutilisation de find sur la sortie standard et quitter.
-ignore_readdir_race
Normalement, find affiche un message dâerreur quand il Ă©choue lors de lâanalyse dâun fichier. Si vous utilisez cette option et que le fichier est effacĂ© entre le moment oĂč find lit le nom du fichier dans le rĂ©pertoire et celui oĂč il essaye de lâanalyser, vous nâobtiendrez aucun message dâerreur. Cela sâapplique aussi aux fichiers et rĂ©pertoires dont vous avez donnĂ© les noms sur la ligne de commande. Cette option prend effet dĂšs le moment oĂč la ligne de commande est lue, ce qui veut dire que vous ne pouvez pas rechercher sur une partie du systĂšme de fichiers avec cette option activĂ©e et sur une autre partie avec cette option dĂ©sactivĂ©e (si vous devez faire cela, vous utiliserez plutĂŽt deux commandes find , une avec lâoption et lâautre sans).
De plus, find avec lâoption -ignore_readdir_race ignorera les erreurs de lâaction -delete si le fichier a disparu depuis la lecture du rĂ©pertoire parent : il nâaffichera pas dâerreur et le code de retour de lâaction -delete sera vrai.
-maxdepth n
Descendre au plus Ă n niveaux de profondeur des rĂ©pertoires ( n Ă©tant un entier positif ou nul) sous le point de dĂ©part. -maxdepth 0 signifie de nâappliquer les tests et les actions quâaux points de dĂ©part eux-mĂȘmes.
-mindepth n
Ne pas appliquer les tests ou les actions Ă des niveaux de profondeur infĂ©rieurs Ă n (un entier non nĂ©gatif). n est un entier positif ou nul. -mindepth 1 signifie que les tests et les actions sâappliquent Ă tous les fichiers sauf aux points de dĂ©part.
|
-mount |
Ne pas parcourir les rĂ©pertoires situĂ©s sur dâautres systĂšmes de fichiers. Il sâagit dâune alternative Ă lâoption -xdev , assurant la compatibilitĂ© avec dâanciennes versions de find . |
-noignore_readdir_race
DĂ©sactiver lâeffet de -ignore_readdir_race .
-noleaf
Ne pas optimiser, en assumant que les rĂ©pertoires contiennent deux sous-rĂ©pertoires de moins que leur nombre de liens physiques. Cette option est nĂ©cessaire lorsque lâon parcourt des systĂšmes de fichiers ne suivant pas les conventions Unix concernant les liens de rĂ©pertoires, comme les systĂšmes MS-DOS, les CD-ROM ou les points de montage de volumes AFS. Chaque rĂ©pertoire sur un systĂšme de fichiers Unix dispose dâau moins deux liens physiques, son nom et « . ». De plus, chaque sous-rĂ©pertoire a Ă©galement un lien « .. » vers le rĂ©pertoire parent (sâil existe). Quand find examine un rĂ©pertoire, il sait quâil y a deux sous-rĂ©pertoires de moins que de liens vers le rĂ©pertoire. Une fois quâil a dĂ©clarĂ© deux sous-rĂ©pertoires de moins que le nombre de liens au rĂ©pertoire, il sait que le reste des entrĂ©es dans le rĂ©pertoire ne sont pas des rĂ©pertoires. (Ces fichiers sont des feuilles ([NDT] « leaf ») dans lâarborescence des rĂ©pertoires). Sâil nây a que les noms de fichiers Ă examiner, il nâa plus besoin de vĂ©rifier leur nature, ce qui entraĂźne une augmentation notable de la vitesse de traitement.
-version , --version
Afficher le numéro de version de find et quitter.
|
-xdev |
Ne pas parcourir les rĂ©pertoires situĂ©s sur dâautres systĂšmes de fichiers. |
TESTS
Quelques tests (comme -newerXY et -samefile par exemple) permettent de comparer le fichier en cours dâexamen et un fichier de rĂ©fĂ©rence indiquĂ© sur la ligne de commande. Quand ces tests sont utilisĂ©s, lâanalyse du fichier de rĂ©fĂ©rence est soumis aux effets des options -H , -L , -P et tout -follow prĂ©cĂ©dent. Par contre, ce fichier de rĂ©fĂ©rence nâest consultĂ© quâune fois, au moment oĂč la ligne de commande est interprĂ©tĂ©e. Si ce fichier de rĂ©fĂ©rence ne peut pas ĂȘtre analysĂ© (par exemple si lâappel systĂšme stat (2) Ă©choue), un message dâerreur sera gĂ©nĂ©rĂ© et la commande find sâinterrompra avec un statut diffĂ©rent de zĂ©ro.
Un paramĂštre numĂ©rique n peut ĂȘtre passĂ© aux tests (comme -amin , -mtime , -gid , -inum , -links , -size , -uid et -used ) ainsi
|
+n |
supérieur à n , |
|||
|
-n |
inférieur à n , |
|||
|
n |
strictement égal à n . |
Tests pris en
charge :
-amin
n
Dernier accÚs au fichier il y a plus de, moins de ou précisément n minutes.
-anewer référence
La date du dernier accĂšs au fichier actuel est plus rĂ©cente que la derniĂšre modification du fichier rĂ©fĂ©rence . Si rĂ©fĂ©rence est un lien symbolique et que les options -H ou -L sont actives, câest toujours la date de derniĂšre modification du fichier pointĂ© qui est utilisĂ©e.
-atime n
Dernier accĂšs au fichier il y a plus de, moins de ou prĂ©cisĂ©ment n *24 heures. Lorsque find calcule le nombre de pĂ©riodes de 24 heures depuis lequel il y a eu un accĂšs au fichier, la partie fractionnelle est ignorĂ©e. Ainsi, pour correspondre Ă -atime +1 , il faut quâun accĂšs au fichier ait eu lieu il y a au moins deux jours.
-cmin n
Date de derniĂšre modification de lâĂ©tat du fichier il y a plus de, moins de ou prĂ©cisĂ©ment n minutes.
-cnewer référence
La date de derniĂšre modification de lâĂ©tat du fichier est plus rĂ©cente que la date de derniĂšre modification du fichier rĂ©fĂ©rence donnĂ©. Si le fichier rĂ©fĂ©rence donnĂ© est un lien symbolique et que les options -H ou -L sont actives, alors câest la date de derniĂšre modification de lâĂ©tat du fichier pointĂ© par le lien qui est considĂ©rĂ©e.
-ctime n
Date de derniĂšre modification de lâĂ©tat du fichier il y a plus de, moins de ou prĂ©cisĂ©ment n *24 heures. Consultez lâexplication concernant -atime pour comprendre comment lâeffet dâarrondi altĂšre lâinterprĂ©tation de la date de derniĂšre modification de lâĂ©tat du fichier.
|
-empty |
Fichier vide. De plus, ce fichier doit ĂȘtre un fichier normal ou un rĂ©pertoire. |
-executable
Correspond aux fichiers qui sont exĂ©cutables et aux rĂ©pertoires qui sont accessibles (en ce qui concerne la rĂ©solution dâun nom de fichier). Les listes de contrĂŽles dâaccĂšs (ACL) et autres artefacts de permissions sont pris en compte, Ă lâinverse du test -perm qui, lui, les ignore. Ce test utilise lâappel systĂšme access (2) et peut de ce fait ĂȘtre trompĂ© par les serveurs NFS qui font de la substitution dâidentitĂ© (ou du root squashing). En effet, de nombreux systĂšmes implĂ©mentent access (2) au niveau du client et ne peuvent donc se servir des substitutions dâidentitĂ© gĂ©rĂ©es du cotĂ© serveur. Puisque ce test nâest basĂ© que sur le rĂ©sultat fourni par lâappel systĂšme access (2), il nây a aucune garantie quâun fichier trouvĂ© par ce test soit rĂ©ellement exĂ©cutable.
|
-false |
Toujours faux. |
-fstype type
Fichier se trouvant sur un systĂšme de fichiers du type indiquĂ©. Les types autorisĂ©s de systĂšmes de fichiers dĂ©pendent de la version dâUnix. Une liste non exhaustive des systĂšmes acceptĂ©s sur certaines versions dâUnix sont : ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Vous pouvez utiliser -printf avec la directive %F pour examiner les types de vos systĂšmes de fichiers.
|
-gid n |
Fichier dont le GID numérique vaut plus de, moins de ou précisément n . |
-group nom_groupe
Fichier appartenant au groupe nom_groupe (éventuellement un identifiant numérique).
-ilname motif
Semblable à -lname , mais sans différencier les majuscules et les minuscules. Si les options -L ou -follow sont actives, ce test renvoie toujours faux, à moins que le lien symbolique ne soit cassé.
-iname motif
Semblable à -name , mais sans différencier les majuscules et les minuscules. Par exemple les motifs « to* » et « T??? » correspondent aux noms de fichiers « Toto », « TOTO », « toto », « tOto », etc. Le motif « toto » correspond aussi à un fichier nommé « totobidule ».
-inum n
Fichier dont le numĂ©ro dâinĆud est infĂ©rieur Ă , supĂ©rieur Ă ou Ă©gal Ă n . Il est en gĂ©nĂ©ral plus facile dâutiliser le test -samefile .
-ipath motif
Semblable à -path , mais sans différencier les capitales et les minuscules.
-iregex motif
Semblable à -regex , mais sans différencier les capitales et les minuscules.
-iwholename motif
Voir -ipath . Cette option est moins portable que -ipath .
-links n
Fichier ayant moins de, plus de ou précisément n liens physiques.
-lname motif
Fichier représentant un lien symbolique, dont le contenu correspond au motif indiqué. Lors du développement des métacaractÚres, « / » et « . » ne sont pas traités différemment des autres caractÚres. Si les options -L ou -follow sont actives, ce test renvoie faux, sauf si le lien symbolique est cassé.
-mmin n
Fichier dont les données ont été modifiées il y a plus de, moins de ou précisément n minutes.
-mtime n
Fichier dont les donnĂ©es ont Ă©tĂ© modifiĂ©es il y a moins de, plus de ou prĂ©cisĂ©ment n *24 heures. Consultez lâexplication sur -atime pour comprendre comment les arrondis affectent lâinterprĂ©tation des dates de modification des fichiers.
-name motif
Fichier dont le nom de base (chemin sans les rĂ©pertoires parents) correspond au motif de lâinterprĂ©teur de commande. Les rĂ©pertoires parents des noms de fichier Ă©tant supprimĂ©s, le motif ne doit pas inclure de barre oblique parce que « -name a/b » ne trouvera rien (vous devrez probablement utiliser plutĂŽt -path ). Une exception Ă lâutilisation de la barre oblique dans motif (« -name / ») est la recherche du rĂ©pertoire racine, car cela est une chaine valable pour correspondre au rĂ©pertoire racine « / » (car le nom de base de « / » est « / »). Un avertissement apparaĂźt si vous essayez de passer un motif contenant une barre oblique, mais ne consistant pas en une seule barre oblique, sauf si la variable dâenvironnement POSIXLY_CORRECT est dĂ©finie ou si lâoption -nowarn est utilisĂ©e.
Pour ignorer un rĂ©pertoire, ainsi que tous ses fichiers, utilisez lâoption -prune plutĂŽt que de vĂ©rifier chaque fichier de lâarbre (vous trouverez un exemple dans la description de cette action). Les parenthĂšses ne sont pas considĂ©rĂ©es comme des caractĂšres spĂ©ciaux, bien que certains interprĂ©teurs de commandes (dont le Bash) attribuent aux parenthĂšses un rĂŽle particulier. La correspondance avec le nom du fichier est obtenue par lâutilisation de la fonction fnmatch (3) de la bibliothĂšque. Nâoubliez pas de protĂ©ger votre motif avec des guillemets afin dâĂ©viter le dĂ©veloppement des mĂ©tacaractĂšres par lâinterprĂ©teur de commandes.
-newer référence
La date de la derniĂšre modification du fichier courant est plus rĂ©cente que celle du fichier rĂ©fĂ©rence indiquĂ©. Si le fichier rĂ©fĂ©rence est un lien symbolique et que les options -H ou -L sont actives, câest la date de modification du fichier pointĂ© qui sera considĂ©rĂ©e.
-newerXY référence
RĂ©ussit si lâhorodatage X dâun fichier est plus rĂ©cent que celui Y dâun fichier rĂ©fĂ©rence . Les lettres X et Y peuvent ĂȘtre une des suivantes :
Certaines combinaisons ne sont pas valables, comme X utilisĂ© avec t . Certaines combinaisons ne sont pas implĂ©mentĂ©es sur certains systĂšmes, comme B qui nâest pas pris en charge par tous les systĂšmes. Une erreur fatale sera renvoyĂ©e si une combinaison non valable ou non implĂ©mentĂ©e de XY est appelĂ©e. Les dates et heures sont interprĂ©tĂ©es comme les arguments de lâoption -d de la commande date de GNU. Si vous essayez dâutiliser la date de crĂ©ation dâun fichier et que cette date de crĂ©ation ne peut pas ĂȘtre dĂ©terminĂ©e, vous obtiendrez un message dâerreur fatale. Si vous spĂ©cifiez un test qui se rĂ©fĂšre Ă la date de crĂ©ation des fichiers Ă examiner, ce test Ă©chouera pour chaque fichier pour lequel la date de crĂ©ation est inconnue.
-nogroup
Fichier dont lâidentifiant de groupe numĂ©rique ne correspond Ă aucun groupe dâutilisateurs.
-nouser
Fichier dont lâUID numĂ©rique ne correspond Ă aucun utilisateur.
-path motif
Fichier dont le nom correspond au motif motif . Les mĂ©tacaractĂšres « / » ou « . » ne sont pas interprĂ©tĂ©s, dâoĂč, par exemple,
find . -path "./sr*sc"
affichera une entrĂ©e pour un rĂ©pertoire nommĂ© ./src/misc (sâil en existe un). Pour ignorer toute une arborescence, utilisez -prune au lieu de vĂ©rifier chaque fichier dâune arborescence. Remarquez que le test de correspondance de motif sâapplique Ă tout le nom du fichier en commençant par un des points de dĂ©part dĂ©signĂ© sur la ligne de commande. Ici, utiliser un chemin absolu nâaurait de sens que si le point de dĂ©part en question est aussi un chemin absolu. Cela veut dire que cette commande ne correspondra jamais :
find bidule -path /truc/bidule/monFichier -print
find compare lâargument -path Ă la concatĂ©nation du nom du rĂ©pertoire et le nom de base du fichier en cours dâexamen. La concatĂ©nation ne se terminant jamais par une barre oblique, les arguments -path qui se terminent par ce signe ne trouveront rien (sauf peut-ĂȘtre un point de dĂ©part spĂ©cifiĂ© sur la ligne de commande). Le prĂ©dicat -path est Ă©galement pris en charge par HP-UX find et fait partie du standard POSIX 2008.
-perm mode
Fichier dont les bits dâautorisations sont fixĂ©s exactement au mode indiquĂ© (en notation symbolique ou octale). Puisquâune correspondance stricte est requise, si vous voulez utiliser cette forme de modes symboliques, vous risquez dâĂȘtre obligĂ© dâutiliser une chaĂźne de caractĂšres plutĂŽt compliquĂ©e. Par exemple, -perm g=w ne recherchera que les fichiers qui ont le mode 0020 (câest-Ă -dire, ceux pour lesquels la permission dâĂ©criture pour le groupe est la seule permission dĂ©finie). Vous voudrez plus certainement utiliser les formes « / » ou « - », telles que -perm -g=w , qui correspondent Ă tous les fichiers qui ont le droit dâĂ©criture pour les groupes. Consultez la section EXEMPLES pour des exemples plus significatifs.
-perm - mode
Fichier ayant tous les bits dâautorisations indiquĂ©s dans le mode . Les notations symboliques sont acceptĂ©es dans ce cas, et câest en gĂ©nĂ©ral comme cela que lâon veut sâen servir. Vous devez indiquer « u », « g » ou « o » si vous utilisez un mode symbolique. Consultez la section EXEMPLES pour des exemples plus significatifs.
-perm / mode
Fichier ayant certains des bits dâautorisations indiquĂ©s dans le mode . La notation symbolique est acceptĂ©e dans ce cas. Vous devez indiquer « u », « g » ou « o » si vous utilisez un mode symbolique. Consultez la section EXEMPLES pour des exemples plus significatifs. Si aucun bit dâautorisation nâest indiquĂ© dans mode , cela correspond Ă tous les fichiers (lâobjectif est dâĂȘtre cohĂ©rent avec le comportement de perm -000 ).
-perm + mode
Cela nâest plus pris en charge (et obsolĂšte depuis 2005). Utilisez plutĂŽt -perm / mode .
-readable
Correspond aux fichiers qui sont accessibles en lecture par lâutilisateur actuel. Les listes de contrĂŽle dâaccĂšs (ACL) et les autres artefacts de permissions sont pris en compte, Ă lâinverse du test -perm qui, lui, les ignore. Ce test utilise lâappel systĂšme access (2), et peut, de ce fait, ĂȘtre trompĂ© par les serveurs NFS qui font de la substitution dâidentitĂ© (UID mapping ou root squashing). En effet, de nombreux systĂšmes implĂ©mentent access (2) au niveau du client et ne peuvent donc pas se servir des substitutions dâidentitĂ©s gĂ©rĂ©es du cotĂ© serveur.
-regex motif
Nom de fichier correspondant Ă lâexpression rationnelle motif . Il sâagit dâune correspondance sur le chemin complet, pas dâune recherche. Par exemple, pour mettre en correspondance un fichier nommĂ© « ./fubar3 », vous pouvez utiliser les expressions rationnelles « .*bar. » ou « .*b.*3 », mais pas « f.*r3 ». Les expressions rationnelles comprises par find sont, par dĂ©faut, celles dâEmacs, mais cela peut ĂȘtre changĂ© avec lâoption -regextype .
-samefile nom
Fichier qui se rĂ©fĂšre au mĂȘme inĆud que nom . Quand -L est actif, cela inclut les liens symboliques.
-size n [ cwbkMG ]
Fichier utilisant moins de, plus de ou prĂ©cisĂ©ment n unitĂ©s dâespace arrondi au nombre supĂ©rieur. On pourra utiliser les suffixes suivants :
|
« b » |
Pour des blocs de 512 octets (comportement par dĂ©faut si rien nâest indiquĂ©). |
||
|
« c » |
Pour indiquer des octets. |
||
|
« w » |
Pour des mots de deux octets. |
||
|
« k » |
Pour des kibioctets (Kio, unités de 1024 octets) |
||
|
« M » |
Pour des mébioctets (Mio, unités de 1024 * 1024 = 1048576 octets) |
||
|
« G » |
pour des gibioctets (Gio, unités de 1024 * 1024 * 1024 = 1073741824 octets) |
La taille est simplement le membre st_size de struct stat remplie par lâappel systĂšme lstat (ou stat ), arrondie Ă lâunitĂ© supĂ©rieure comme dĂ©crit ci-dessus. En dâautres termes, il est cohĂ©rent avec le rĂ©sultat de ls -l . Souvenez-vous que les spĂ©cificateurs de format « %k » et « %b » de -printf gĂšrent diffĂ©remment les fichiers creux. Le suffixe « b » dĂ©compte toujours des blocs de 512 octets, jamais de 1024 octets, contrairement au comportement de -ls .
Les prĂ©fixes + et - signifient, comme dâhabitude, plus grand que et plus petit que ; ainsi une taille exacte de n unitĂ©s ne correspond pas. Retenez que la taille est arrondie Ă lâunitĂ© supĂ©rieure. Donc -size -1M nâĂ©quivaut pas Ă -size -1048576c . Le premier ne correspond quâĂ des fichiers vides, le second Ă des fichiers pesant entre 0 et 1 048 575 octets.
|
-true |
Toujours vrai. |
-type c
Fichier du type c :
|
b |
fichier spécial en mode bloc (avec tampon) |
||
|
c |
fichier spécial en mode caractÚre (sans tampon) |
||
|
d |
répertoire |
||
|
p |
tube nommé (FIFO) |
||
|
f |
fichier normal |
||
|
l |
Lien symbolique, nâest jamais vrai si les options -L ou -follow sont actives, Ă moins que le lien symbolique ne soit cassĂ©. Si vous voulez rechercher des liens symboliques alors que -L est actif, utilisez -xtype . |
||
|
s |
socket |
||
|
D |
door (Solaris) |
Pour rechercher plus dâun type Ă la fois, vous pouvez fournir une liste combinĂ©e de lettres de types sĂ©parĂ©es par une virgule « , » (extension GNU).
|
-uid n |
Fichier dont lâidentifiant utilisateur numĂ©rique vaut plus de, moins de ou prĂ©cisĂ©ment n . |
-used n
Fichier dont le dernier accÚs date de plus de, moins de ou précisément n jours aprÚs la date de sa derniÚre modification.
-user utilisateur
Fichier appartenant Ă lâ utilisateur indiquĂ© (identifiant utilisateur numĂ©rique Ă©ventuellement).
-wholename motif
Voir -path . Cette option est moins portable que -path .
-writable
Correspond aux fichiers qui sont accessibles en Ă©criture par lâutilisateur actuel. Les listes de contrĂŽle dâaccĂšs (ACL) et les autres artefacts de permissions sont pris en compte, Ă lâinverse du test -perm qui, lui, les ignore. Ce test utilise lâappel systĂšme access (2) et peut, de ce fait, ĂȘtre trompĂ© par les serveurs NFS qui font de la substitution dâidentitĂ© (UID mapping ou root squashing), Ă©tant donnĂ© que de nombreux systĂšmes implĂ©mentent access (2) au niveau du noyau du client et ne peuvent donc se servir des substitutions dâidentitĂ©s gĂ©rĂ©es du cĂŽtĂ© serveur.
-xtype c
Semblable Ă -type sauf si le fichier est un lien symbolique. Pour les liens symboliques, si les options -H ou -P ont Ă©tĂ© spĂ©cifiĂ©es, le test est vrai si le fichier pointĂ© par le lien est de type c ; si lâoption -L a Ă©tĂ© spĂ©cifiĂ©e, le test est vrai si c vaut « l ». Autrement dit, pour les liens symboliques, -xtype vĂ©rifie le type des fichiers que lâoption -type ne vĂ©rifie pas. Si un lien symbolique est cassĂ© (parce que le sujet quâil pointe nâexiste pas ou que le lien pointe sur lui-mĂȘme), alors -xtype se comportera comme -type .
-context motif
(SELinux seulement) le contexte de sécurité du fichier correspond au motif global.
ACTIONS
-delete
Effacer les fichiers ou les rĂ©pertoires et renvoyer vrai si lâeffacement a rĂ©ussi. Si lâeffacement Ă©choue, un message dâerreur est envoyĂ© et le code de retour de find sera diffĂ©rent de zĂ©ro (quand finalement il sâinterrompt).
Attention : Nâoubliez pas que find Ă©value la ligne de commande comme une expression. Aussi placer -delete en premier fera que find essaiera de dĂ©truire tout ce quâil trouvera sous le point de dĂ©part spĂ©cifiĂ©.
Lâutilisation de lâaction -delete en ligne de commande active automatiquement lâoption -depth . Comme Ă son tour -depth rend -prune inefficace, lâaction -delete ne peut pas ĂȘtre combinĂ©e de façon utile avec -prune .
Souvent, lâutilisateur voudrait tester une recherche find en ligne de commande avec -print avant dâajouter -delete Ă lâexĂ©cution rĂ©elle de la suppression. Pour Ă©viter des rĂ©sultats surprenants, il est habituellement prĂ©fĂ©rable de ne pas oublier dâutiliser -depth explicitement pendant lâexĂ©cution prĂ©alable du test.
Lâaction -delete Ă©chouera aussi Ă supprimer un rĂ©pertoire Ă moins quâil ne soit vide.
Avec lâoption -ignore_readdir_race , find ignorera les erreurs de lâaction -delete si le fichier a disparu depuis que le rĂ©pertoire parent a Ă©tĂ© lu : il nâaffichera pas de diagnostic dâerreur, ne changera pas le code dâerreur Ă une valeur diffĂ©rente de zĂ©ro, et le code de retour de lâaction -delete sera vrai.
-exec commande ;
ExĂ©cuter la commande ; vrai si le code de retour 0 est renvoyĂ©. Tous les paramĂštres qui suivent find sont considĂ©rĂ©s comme des paramĂštres pour la ligne de commande, jusquâĂ la rencontre dâun caractĂšre « ; ». La chaĂźne « {} » est remplacĂ©e par le nom du fichier en cours de traitement, cela dans toutes ses occurrences sur la ligne de commande et pas seulement aux endroits oĂč elle est isolĂ©e, comme câest le cas avec dâautres versions de find . Ces deux chaĂźnes peuvent avoir besoin dâĂȘtre protĂ©gĂ©es du dĂ©veloppement de la ligne de commande par lâinterprĂ©teur, en utilisant le caractĂšre dâĂ©chappement (« \ ») ou une protection par des guillemets. Consultez la section EXEMPLES pour des exemples dâutilisation de lâoption -exec . La commande indiquĂ©e est exĂ©cutĂ©e Ă chaque fois quâun fichier correspond. La commande est exĂ©cutĂ©e depuis le rĂ©pertoire de dĂ©part. Il existe dâinĂ©vitables problĂšmes de sĂ©curitĂ© associĂ©s Ă lâusage de lâoption -exec , câest pourquoi vous devriez utiliser lâoption -execdir Ă la place.
-exec commande {} +
Cette variante de lâoption -exec exĂ©cute la commande spĂ©cifiĂ©e sur les fichiers sĂ©lectionnĂ©s, mais en ajoutant le nom de chaque fichier trouvĂ© Ă la fin de la ligne de commande. Le nombre total dâinvocations de la commande sera donc trĂšs infĂ©rieur au nombre de fichiers trouvĂ©s. La ligne de commande est construite Ă la maniĂšre de xargs . Une seule instance de « {} » est permise Ă lâintĂ©rieur de la commande et elle doit apparaĂźtre Ă la fin et immĂ©diatement avant le « + » ; elle doit ĂȘtre Ă©chappĂ©e (avec un « \ ») ou entre guillemets pour la protĂ©ger dâune interprĂ©tation par les interprĂ©teurs. La commande sera exĂ©cutĂ©e dans le rĂ©pertoire de dĂ©part. Si une invocation avec la forme « + » renvoie une valeur diffĂ©rente de zĂ©ro comme code de retour, alors find renvoie un code de retour diffĂ©rent de zĂ©ro. Si find rencontre une erreur, cela peut parfois provoquer une fin immĂ©diate, aussi certaines commandes en attente pourraient ne pas ĂȘtre exĂ©cutĂ©es. Câest pourquoi -exec ma_commande ... {} \+ -quit peut nâaboutir Ă aucune exĂ©cution de ma_commande . Cette variante de -exec renvoie toujours vrai.
-execdir
commande
;
-execdir
commande
{} +
Semblable Ă -exec , sauf que la commande indiquĂ©e sera exĂ©cutĂ©e Ă partir du sous-rĂ©pertoire contenant le fichier correspondant qui nâest normalement pas celui Ă partir duquel vous avez lancĂ© find . Comme avec -exec , {} devrait ĂȘtre entourĂ© de guillemets si find est appelĂ© depuis un interprĂ©teur. Câest une mĂ©thode bien plus fiable dâinvocation de commande, puisquâelle Ă©vite des conflits de rĂ©solution de chemins des fichiers trouvĂ©s. Comme pour lâoption -exec , la forme de -execdir avec « + » construira une ligne de commande de telle sorte quâelle pourra traiter plusieurs fichiers trouvĂ©s en une passe, mais chaque invocation de commande ne portera que sur une liste de fichiers issus dâun seul et mĂȘme rĂ©pertoire. Si vous utilisez cette option, veillez bien Ă ce que votre variable dâenvironnement PATH ne contienne pas une rĂ©fĂ©rence au rĂ©pertoire courant « . », sinon un pirate pourrait lancer toutes les commandes quâil souhaite en mettant un fichier au nom adĂ©quat dans les rĂ©pertoires oĂč vous allez lancer un -execdir . De la mĂȘme maniĂšre, Ă©vitez les rĂ©fĂ©rences vides ou les noms de rĂ©pertoires exprimĂ©s en relatif dans PATH . Si une invocation avec la forme « + » renvoie un Ă©tat de sortie autre que zĂ©ro, find renvoie un Ă©tat de sortie qui nâest pas zĂ©ro. Si find rencontre une erreur, il peut quitter immĂ©diatement, donc des commandes en attente ne seront pas lancĂ©es. Le rĂ©sultat de lâaction varie selon que vous utilisez la variante + ou ; ; -execdir commande {} + renvoie toujours vrai alors que -execdir commande {} ; ne renvoie vrai que si commande renvoie 0 .
-fls fichier
Vrai ; semblable Ă -ls , mais Ă©crire dans le fichier comme le fait -fprint . Le fichier en sortie est toujours créé, mĂȘme si le prĂ©dicat nâest jamais vĂ©rifiĂ©. Consultez la section NOMS DE FICHIERS PEU COURANTS pour obtenir des informations sur la gestion des caractĂšres inhabituels dans les noms de fichier.
- fprint fichier
Vrai ; Ă©crire le nom complet dans le fichier . Si fichier nâexiste pas au dĂ©marrage de find , il est créé. Sâil existe, il est Ă©crasĂ©. Les noms de fichier /dev/stdout et /dev/stderr sont traitĂ©s de maniĂšre particuliĂšre, ils correspondent respectivement Ă la sortie standard et Ă la sortie dâerreurs. Le fichier de sortie est toujours créé, mĂȘme si le prĂ©dicat nâest jamais vĂ©rifiĂ©. Consultez la section NOMS DE FICHIERS PEU COURANTS pour obtenir des informations sur la gestion des caractĂšres inhabituels dans les noms de fichiers.
-fprint0 fichier
Vrai ; semblable Ă -print0 , mais Ă©crire dans le fichier comme le fait -fprint . Le fichier de sortie est toujours créé, mĂȘme si le prĂ©dicat nâest jamais vĂ©rifiĂ©. Consultez la section NOMS DE FICHIERS PEU COURANTS pour obtenir des informations sur la gestion des caractĂšres inhabituels dans les noms de fichiers.
-fprintf fichier format
Vrai ; semblable Ă -printf , mais Ă©crire dans le fichier comme le fait -fprint . Le fichier de sortie est toujours créé, mĂȘme si le prĂ©dicat nâest jamais vĂ©rifiĂ©. Consultez la section NOMS DE FICHIERS PEU COURANTS pour obtenir des informations sur la gestion des caractĂšres inhabituels dans les noms de fichiers.
|
-ls |
Vrai, afficher le nom du fichier en cours dans le format ls -dils sur la sortie standard. La taille est calculĂ©e en blocs de 1 Ko, Ă moins que la variable dâenvironnement POSIXLY_CORRECT ne soit positionnĂ©e, auquel cas la taille est calculĂ©e en blocs de 512 octets. Consultez la section NOMS DE FICHIERS PEU COURANTS pour obtenir des informations sur la gestion des caractĂšres inhabituels dans les noms de fichier. |
-ok commande ;
Comme -exec , mais interroger dâabord lâutilisateur. Si lâutilisateur acquiesce, la commande est lancĂ©e. Sinon, le test devient faux. Si la commande est lancĂ©e, son entrĂ©e standard est redirigĂ©e depuis /dev/null . Cette action ne peut ĂȘtre indiquĂ©e en mĂȘme temps que lâoption -files0-from .
La rĂ©ponse Ă lâinvite de commande est comparĂ©e Ă deux expressions rationnelles afin de dĂ©terminer sâil sâagit dâune rĂ©ponse positive ou nĂ©gative. Ces expressions rationnelles sont donnĂ©es par le systĂšme si la variable dâenvironnement POSIXLY_CORRECT est dĂ©finie et, dans le cas contraire, dans les traductions des messages de find . Si le systĂšme nâa aucune dĂ©finition appropriĂ©e, les propres dĂ©finitions de find seront utilisĂ©es. Dans tous les cas, lâinterprĂ©tation de ces expressions rationnelles sera modifiĂ©e par les variables dâenvironnement LC_CTYPE (classe de caractĂšres) et LC_COLLATE (caractĂšres Ă©tendus et classes dâĂ©quivalence).
-okdir commande ;
Comme -execdir , mais interroger dâabord lâutilisateur comme dans le cas de -ok . Si lâutilisateur nâacquiesce pas, le test renvoie faux. Si la commande est lancĂ©e, son entrĂ©e standard est redirigĂ©e depuis /dev/null . Cette action ne peut ĂȘtre indiquĂ©e en mĂȘme temps que lâoption -files0-from .
|
|
Vrai ; afficher le nom complet du fichier sur la sortie standard, suivi dâun saut de ligne. Si vous redirigez la sortie standard de find vers un autre programme et quâil y a la moindre chance quâun des noms des fichiers que vous recherchez contienne un saut de ligne, alors vous devriez trĂšs sĂ©rieusement opter pour lâoption -print0 plutĂŽt que -print . Consultez la section NOMS DE FICHIERS PEU COURANTS pour obtenir des informations sur la gestion des caractĂšres inhabituels dans les noms de fichier. |
-print0
Vrai ; afficher le nom complet du fichier sur la sortie standard, suivi dâun octet NULL (Ă la place du caractĂšre saut de ligne que -print utilise). Cela permet aux fichiers dont le nom contient un saut de ligne ou dâautres types de caractĂšres non affichables, dâĂȘtre correctement interprĂ©tĂ©s par les programmes utilisant les donnĂ©es en sortie de find . Cette option correspond Ă lâoption -0 de xargs .
-printf format
Vrai ; afficher le format sur la sortie standard, en interprĂ©tant les sĂ©quences dâĂ©chappement « \ » et les directives « % ». La largeur et la prĂ©cision des champs peuvent ĂȘtre spĂ©cifiĂ©es comme dans la fonction « printf » du langage C. Notez bien que la plupart des champs sont affichĂ©s selon %s plutĂŽt que %d, ce qui veut dire que les drapeaux ne fonctionneront peut-ĂȘtre pas comme vous vous y attendez. Cela veut aussi dire que le drapeau « - » fonctionnera (il force lâalignement des champs Ă gauche). Contrairement Ă -print , -printf nâajoute pas de saut de ligne Ă la fin de la chaĂźne. Les sĂ©quences dâĂ©chappement et les directives sont les suivantes :
|
\a |
Sonnerie. |
||
|
\b |
Effacement arriĂšre (Backspace). |
||
|
\c |
ArrĂȘter immĂ©diatement lâimpression du format et vider le flux de sortie. |
||
|
\f |
Saut de page. |
||
|
\n |
Nouvelle ligne. |
||
|
\r |
Retour chariot. |
||
|
\t |
Tabulation horizontale. |
||
|
\v |
Tabulation verticale. |
||
|
\0 |
CaractĂšre ASCII NUL. |
||
|
\\ |
Un caractÚre « \ » littéral. |
||
|
\NNN |
Le caractĂšre ASCII dont le code est NNN (en octal). |
Un « \ » suivi de nâimporte quel autre caractĂšre est traitĂ© comme un caractĂšre ordinaire ; ils sont donc affichĂ©s tous les deux.
|
%% |
Un caractÚre pourcentage littéral (%). |
||
|
%a |
Date du dernier accÚs au fichier, dans le format renvoyé par la fonction C ctime (3). |
||
|
%A k |
Date du dernier accĂšs au fichier, dans le format spĂ©cifiĂ© par k , qui doit ĂȘtre soit un « @ », soit une directive pour la fonction C strftime (3). Les valeurs possibles de k sont indiquĂ©es ci-dessous. Veuillez vous reporter Ă la documentation de strftime (3) pour la liste complĂšte. Certains caractĂšres de spĂ©cification de conversion pourraient ne pas ĂȘtre disponibles sur tous les systĂšmes, Ă cause des diffĂ©rences entre les fonctions strftime (3) existantes. |
@
|
Secondes écoulées depuis le 1er janvier 1970 à 00 h 00 GMT, avec une partie décimale. |
Champs horaires :
|
H |
heure (00..23) |
||
|
I |
heure (01..12) |
||
|
k |
Heure (0..23) |
||
|
l |
Heure (1..12) |
||
|
M |
minute (00..59) |
||
|
p |
AM ou PM, avec la désignation locale |
||
|
r |
Heure au format 12 heures (hh:mm:ss [AP]M) |
||
|
S |
Seconde (00.00 .. 61.00). Une partie est fractionnée. |
||
|
T |
Heure au format 24 heures (hh:mm:ss.xxxxxxxxxx) |
||
|
+ |
La date et lâheure, sĂ©parĂ©es par un « + », « 2004-04-28+22:22:05 » par exemple. Câest une extension GNU. Lâheure est donnĂ©e dans la zone horaire courante (qui peut ĂȘtre modifiĂ©e Ă lâaide de la variable dâenvironnement TZ ). Le second champ contient une partie dĂ©cimale. |
||
|
X |
ReprĂ©sentation locale de lâheure (H:M:S). Le champ secondes comprend une partie fractionnĂ©e. |
||
|
Z |
Fuseau horaire (par exemple MET) ou rien si le fuseau horaire est indéterminé. |
Champs de date :
|
a |
Abréviation locale du jour de la semaine (lun..dim) |
||
|
A |
Nom local entier du jour de la semaine, de longueur variable (lundi..dimanche) |
||
|
b |
Abréviation locale du mois (jan..déc) |
||
|
B |
Nom local entier du mois, de longueur variable (janvier..décembre) |
||
|
c |
Date et heure locale (Sat Nov 04 12:02:33 EST 1989). Le format utilisĂ© est le mĂȘme que pour ctime (3) et, afin de prĂ©server la compatibilitĂ© avec ce format, il nây a pas de partie dĂ©cimale pour les secondes. |
||
|
d |
QuantiĂšme du mois (01..31) |
||
|
D |
Date (mm/jj/aa) |
||
|
F |
Date (aaaa/mm/jj) |
||
|
h |
Identique Ă b |
||
|
j |
quantiĂšme du jour dans lâannĂ©e (001..366) |
||
|
m |
mois (01..12) |
||
|
U |
NumĂ©ro de la semaine dans lâannĂ©e, les semaines commençant le dimanche (00..53) |
||
|
w |
Jour de la semaine (0..6) |
||
|
W |
NumĂ©ro de la semaine dans lâannĂ©e, les semaines commençant le lundi (00..53) |
||
|
x |
Représentation locale de la date (mm/jj/aa) |
||
|
y |
deux derniers chiffres de lâannĂ©e (00..99) |
||
|
Y |
Année (1970...) |
||
|
%b |
Taille de lâespace disque consommĂ© par le fichier, en nombre de blocs de 512 octets. Puisque lâespace disque est allouĂ© par multiple de la taille dâun bloc du systĂšme de fichiers, on obtient souvent un rĂ©sultat supĂ©rieur Ă %s/512 . Il peut aussi ĂȘtre infĂ©rieur si le fichier est creux (sparse file).
|
%B k |
La date de « naissance » du fichier, câest-Ă -dire sa date de crĂ©ation, au format spĂ©cifiĂ© par k qui est le mĂȘme que pour %A. Cette directive produit une chaĂźne vide si le systĂšme dâexploitation ou le systĂšme de fichiers sous-jacents ne gĂšrent pas les dates de crĂ©ation. |
||
|
%c |
Date de derniĂšre modification dâĂ©tat du fichier, dans le format renvoyĂ© par la fonction C ctime (3). |
||
|
%C k |
Date de derniÚre modification du statut du fichier, dans le format spécifié par k , comme pour la directive %A. |
||
|
%d |
Profondeur du fichier dans lâarborescence des rĂ©pertoires, 0 signifiant que le fichier est un paramĂštre de la ligne de commande. |
||
|
%D |
Le numéro du périphérique sur lequel le fichier est rangé (la valeur du champ st_dev de struct stat ) exprimé selon le systÚme décimal. |
||
|
%f |
Afficher le nom de base ; le nom du fichier moins les répertoires supérieurs (uniquement le dernier élément). Pour « / », le résultat est « / ». Voir la section EXEMPLES pour un exemple. |
||
|
%F |
Type de systĂšme de fichiers sur lequel se trouve le fichier. Cette valeur peut ĂȘtre utilisĂ©e pour lâoption -fstype . |
||
|
%g |
Nom du groupe propriĂ©taire du fichier ou identifiant de groupe numĂ©rique si le groupe nâa pas de nom. |
||
|
%G |
Identifiant de groupe numérique du fichier. |
||
|
%h |
Nom de rĂ©pertoire ; rĂ©pertoires en tĂȘte du nom de fichier (tout sauf la derniĂšre partie). Si le nom du fichier ne contient aucune barre oblique (NDT : slash) (donc si câest un fichier du rĂ©pertoire courant), alors lâoption %h se dĂ©veloppera en « . ». Pour les fichiers Ă©tant eux-mĂȘmes des rĂ©pertoires et contenant une barre oblique (y compris / ), %h se dĂ©veloppe en une chaĂźne vide. Voir la section EXEMPLES pour un exemple. |
||
|
%H |
Point de départ à partir duquel le fichier a été trouvé. |
||
|
%i |
NumĂ©ro dâinode du fichier (selon le systĂšme dĂ©cimal). |
||
|
%k |
Taille de lâespace disque utilisĂ© par un fichier, en nombre de blocs de 1 kilo-octet. Puisque lâespace disque est allouĂ© par multiple de la taille dâun bloc du systĂšme de fichiers, on obtient souvent un rĂ©sultat supĂ©rieur Ă %s/1024 . Il peut aussi ĂȘtre infĂ©rieur si le fichier est creux. |
||
|
%l |
Destination du lien symbolique (vide si le fichier nâest pas un lien symbolique). |
||
|
%m |
Bits dâautorisation dâaccĂšs au fichier (en systĂšme octal). Cette option utilise les nombres « traditionnellement » utilisĂ©s dans la plupart des implĂ©mentations dâUnix, mais si votre systĂšme utilise un ordre inhabituel de la forme octale des bits de permissions, alors vous observerez une diffĂ©rence entre la valeur rĂ©elle des modes du fichier et la sortie de %m. On veut habituellement un zĂ©ro en dĂ©but de ce nombre et pour lâobtenir vous pouvez utiliser le drapeau # (« %#m », par exemple). |
||
|
%M |
Les permissions du fichier (sous forme symbolique, comme dans ls ). Cette directive nâest disponible que dans les versions de findutils 4.2.5 et suivantes. |
||
|
%n |
Nombre de liens physiques sur le fichier. |
||
|
%p |
Nom du fichier. |
||
|
%P |
Nom du fichier, sans le nom du point de départ sous lequel il a été trouvé. |
||
|
%s |
Taille du fichier en octets. |
||
|
%S |
DensitĂ© du fichier, calculĂ©e par la formule TAILLEBLOC*nb_bloc/taille_fichier . La valeur obtenue pour un fichier ordinaire dâune certaine taille dĂ©pend du systĂšme dâexploitation. Toutefois, la valeur normalement attendue pour un fichier creux (sparse file) est infĂ©rieure Ă 1.0, tandis quâun fichier qui utilise lâindirection de blocs pourra obtenir une valeur supĂ©rieure Ă 1.0. En gĂ©nĂ©ral, le nombre de blocs utilisĂ©s par un fichier dĂ©pend du systĂšme de fichiers. La valeur de TAILLEBLOC est dĂ©pendante du systĂšme, mais est souvent de 512 octets. Si le fichier a une taille nulle, la valeur affichĂ©e est indĂ©finie. Sur les systĂšmes qui nâoffrent pas la gestion des nombres de blocs, la valeur de la densitĂ© du fichier sera de 1.0. |
||
|
%t |
Date de derniÚre modification du fichier, dans le format renvoyé par la fonction C ctime (3). |
||
|
%T k |
Date de derniÚre modification du fichier, dans le format spécifié par k , comme pour la directive %A. |
||
|
%u |
Nom du propriĂ©taire du fichier ou identifiant utilisateur numĂ©rique si lâutilisateur nâa pas de nom. |
||
|
%U |
Identifiant utilisateur numérique du propriétaire du fichier. |
||
|
%y |
Type du fichier (comme dans ls -l ), U pour type inconnu (ce qui ne devrait pas arriver). |
||
|
%Y |
Type du fichier (comme pour %y), suivi des liens symboliques : « L »=boucle, « N »=inexistant, « ? » pour toute autre erreur au moment de la détermination du type de la cible du lien symbolique. |
||
|
%Z |
(SELinux seulement) Le contexte de sécurité du fichier. |
%{ %[ %(
Réservé pour une utilisation future.
Un caractĂšre « % » suivi de nâimporte quel autre caractĂšre est supprimĂ©, mais le second caractĂšre est affichĂ© (ne soyez pas trop confiant cependant, car de nouveaux caractĂšres de format pourront ĂȘtre un jour utilisĂ©s). Un « % » Ă la fin de lâargument de format peut engendrer un comportement alĂ©atoire puisquâil nây a aucun caractĂšre suivant. Ce qui peut ĂȘtre plus ou moins grave suivant les cas.
Les options %m et %d gĂšrent les drapeaux # , 0 et + , Ă lâinverse des autres directives, mĂȘme si elles affichent des nombres. Les autres directives numĂ©riques qui ne gĂšrent pas ces drapeaux sont G , U , b , D , k et n . Le drapeau de format « - » est gĂ©rĂ©, et transforme lâalignement des champs (qui sont par dĂ©faut alignĂ©s Ă droite) en alignement Ă gauche.
Consultez la section NOMS DE FICHIERS PEU COURANTS pour obtenir des informations sur la gestion des caractĂšres inhabituels dans les noms de fichier.
|
-prune |
Vrai ; si le fichier est un répertoire, ne pas y descendre. Si -depth est donné, alors -prune est sans effet. Parce que -delete implique -depth , vous ne pouvez pas utiliser utilement à la fois -prune et -delete . Par exemple, pour sauter le répertoire src/emacs et tous les fichiers et répertoires en dessous, et afficher les noms des autres fichiers trouvés, faites quelque chose comme ceci : |
find . -path ./src/emacs -prune -o -print
|
-quit |
Quitter immĂ©diatement (avec le code de retour zĂ©ro sâil nây a eu aucune erreur). Câest diffĂ©rent de -prune , car -prune ne sâapplique quâau contenu des rĂ©pertoires coupĂ©s, tandis que -quit arrĂȘte simplement find immĂ©diatement. Aucune exĂ©cution de processus enfant ne sera poursuivie. Toute ligne de commande construite par -exec ... + ou -execdir ... + sera appelĂ©e avant que le programme ne quitte. AprĂšs -quit , plus aucun fichier indiquĂ© sur la ligne de commande ne sera traitĂ©. Par exemple, « find /tmp/toto /tmp/machin -print -quit » nâaffichera que « /tmp/toto ». |
Une utilisation classique de -quit consiste Ă arrĂȘter lâexamen du systĂšme de fichiers dĂšs quâon a trouvĂ© ce quâon cherche. Par exemple, si on veut chercher un seul fichier, on peut faire cela :
find / -name needle -print -quit
OPĂRATEURS
Dans
lâordre de prioritĂ© dĂ©croissante :
(
expr
)
Forcer la prioritĂ©. Comme les parenthĂšses risquent dâĂȘtre interprĂ©tĂ©es par le shell, vous devriez normalement les protĂ©ger. De nombreux exemples de cette page de manuel utilisent lâantislash dans ce but, par exemple « \(...\) » au lieu de « (...) ».
|
! expr |
Vrai si expr est faux. Ce caractĂšre doit habituellement ĂȘtre protĂ©gĂ© pour Ă©viter dâĂȘtre interprĂ©tĂ© par le shell. |
-not expr
Identique Ă ! expr , mais non conforme Ă la norme POSIX.
expr1 expr2
Deux expressions sur la mĂȘme ligne sont prises pour ĂȘtre jointes par un -a impliqué ; expr2 nâest pas Ă©valuĂ© si expr1 est faux.
expr1 -a expr2
Identique Ă expr1 expr2 .
expr1 -and expr2
Identique Ă expr1 expr2 , mais non conforme Ă la norme POSIX.
expr1 -o expr2
OU ; expr2 nâest pas Ă©valuĂ©e si expr1 est vraie.
expr1 -or expr2
Identique Ă expr1 -o expr2 , mais non conforme Ă la norme POSIX.
expr1 , expr2
Lister ; expr1 et expr2 sont toujours Ă©valuĂ©es. La valeur de expr1 est annulĂ©e, la valeur de la liste est la valeur de expr2 . Le sĂ©parateur virgule est pratique pour rechercher diffĂ©rents types de choses tout en ne traversant quâune fois lâarborescence du systĂšme de fichiers. Lâaction -fprintf peut ĂȘtre utilisĂ©e pour rĂ©cupĂ©rer une liste dâĂ©lĂ©ments variĂ©s pour les ranger dans diffĂ©rents fichiers en sortie.
Veuillez remarquer le -a , quand il est spĂ©cifiĂ© implicitement (par exemple par deux tests sans opĂ©rateur explicite entre eux) ou explicitement, a une plus haute prioritĂ© que -o . Cela signifie que find . -name fichier1 -o -name fichier2 -print nâaffichera jamais fichier1 .
NOMS DE FICHIERS PEU COURANTS
Beaucoup
dâactions de
find
finissent par afficher des
données qui sont sous le contrÎle
dâautres utilisateurs. Cela est vrai pour les noms de
fichiers, les tailles, les dates de modification et ainsi de
suite. Les noms de fichiers posent des problĂšmes
potentiels puisquâils peuvent contenir nâimporte
quel caractĂšre, Ă lâexception de
« \0 » et « / ».
Les caractĂšres inhabituels dans les noms de fichier
peuvent produire des résultats inattendus et souvent
indésirables sur votre terminal (modifier les
définitions des touches de fonctions de certains
terminaux, par exemple). Les caractĂšres inhabituels
sont gérés de différentes façons
selon les actions, selon la description ci-dessous.
-print0
,
-fprint0
Afficher toujours exactement le nom de fichier non modifiĂ©, mĂȘme si la sortie est un terminal.
-ls , -fls
Tout caractĂšre inhabituel est toujours protĂ©gĂ©. Les espaces, les barres obliques inverses et les guillemets sont affichĂ©s selon les conventions des Ă©chappements du C (« \f »,« \" », par exemple). Tous les autres caractĂšres inhabituels sont affichĂ©s en utilisant une protection octale. Tous les autres caractĂšres affichables (en ce qui concerne -ls et -fls , il sâagit des caractĂšres dont le code octal est compris entre 041 et 0176) sont affichĂ©s en lâĂ©tat.
-printf , -fprintf
Si la sortie nâest pas un terminal, les caractĂšres sont affichĂ©s en lâĂ©tat. Sinon, le rĂ©sultat dĂ©pend de la directive en cours dâutilisation. Les directives %D, %F, %g, %G, %H, %Y et %y sont transformĂ©es en valeurs non contrĂŽlĂ©es par les propriĂ©taires des fichiers, et donc imprimĂ©es telles quelles. Les directives %a, %b, %c, %d, %i, %k, %m, %M, %n, %s, %t, %u et %U donnent des valeurs qui sont sous le contrĂŽle des propriĂ©taires des fichiers, mais qui ne peuvent pas ĂȘtre utilisĂ©es pour envoyer des donnĂ©es arbitraires au terminal, elles sont donc imprimĂ©es telles quelles. Les directives %f, %h, %l, %p et %P sont protĂ©gĂ©es par des guillemets. Cette protection est appliquĂ©e Ă la maniĂšre du ls du GNU. Il ne sâagit pas du mĂȘme mĂ©canisme de protection que celui utilisĂ© pour -ls et -fls . Si vous pouvez choisir le format Ă utiliser pour la sortie de find , sachez quâil vaut mieux utiliser « \0 » plutĂŽt que nouvelle ligne en tant que terminaison, car les noms de fichiers peuvent contenir des caractĂšres espace ou nouvelle ligne. Le rĂ©glage de la variable dâenvironnement LC_CTYPE permet de dĂ©finir la liste des caractĂšres qui doivent ĂȘtre protĂ©gĂ©s.
-print , -fprint
Les guillemets sont gĂ©rĂ©s Ă la maniĂšre de -printf et -fprintf . Si vous utilisez find dans un script ou dans un cas de figure particulier dans lesquels les fichiers correspondants peuvent avoir des noms arbitraires, lâutilisation de -print0 devrait ĂȘtre prĂ©fĂ©rĂ©e Ă -print .
Les actions -ok et -okdir affichent le nom du fichier traitĂ© tel quâil est. Cela pourrait changer dans une version ultĂ©rieure.
CONFORMITĂ AUX STANDARDS
Vous devriez dĂ©finir la variable dâenvironnement POSIXLY_CORRECT pour une compatibilitĂ© au plus proche du standard POSIX. Les options suivantes sont dĂ©finies dans le standard POSIX (IEEE Std 1003.1-2008, Ădition 2016) :
|
-H |
Cette option est gérée. |
||
|
-L |
Cette option est gérée. |
||
|
-name |
Cette option est gĂ©rĂ©e, mais la conformitĂ© Ă POSIX dĂ©pend de la conformitĂ© POSIX de la fonction fnmatch (3) de la bibliothĂšque du systĂšme. Ă compter de findutils-4.2.2, les mĂ©tacaractĂšres du shell (« * », « ? » ou « [] » par exemple) trouveront les fichiers commençant par « . », car lâinterprĂ©tation 126 dâIEEE PASC lâimpose. Cela diffĂšre des versions prĂ©cĂ©dentes de findutils. |
||
|
-type |
GĂ©rĂ©e. POSIX stipule « b », « c », « d », « l », « p », « f » et « s ». GNU find gĂšre aussi « D », reprĂ©sentant un Door, pour les systĂšmes dâexploitation qui le fournissent. En outre, GNU find permet de spĂ©cifier plusieurs types Ă la fois dans une liste sĂ©parĂ©e par des virgules. |
||
|
-ok |
GĂ©rĂ©e. LâinterprĂ©tation de la rĂ©ponse est soumise aux motifs « oui » ou « non » sĂ©lectionnĂ©s grĂące au rĂ©glage de la variable dâenvironnement LC_MESSAGES . Lorsque la variable dâenvironnement POSIXLY_CORRECT est dĂ©finie, ces schĂ©mas sont obtenus Ă partir de la dĂ©finition des rĂ©ponses positives (yes) et nĂ©gatives (no) du systĂšme. Consultez la documentation nl_langinfo (3) du systĂšme, et notamment YESEXPR et NOEXPR. Lorsque POSIXLY_CORRECT nâest pas dĂ©fini, ces schĂ©mas sont extraits du propre catalogue de messages de find . |
||
|
-newer |
GĂ©rĂ©e. Si le fichier spĂ©cifiĂ© est un lien symbolique, il est toujours dĂ©rĂ©fĂ©rencĂ©. Cela est diffĂ©rent du comportement prĂ©cĂ©dent, qui utilisait lâhorodatage correspondant du lien symbolique (consultez la section HISTORIQUE plus loin). |
||
|
-perm |
GĂ©rĂ©e. Si la variable dâenvironnement POSIXLY_CORRECT nâest pas dĂ©finie, quelques arguments de mode dâaccĂšs (par exemple +a+x), bien que non valables en POSIX, sont gĂ©rĂ©s par souci de rĂ©tro-compatibilitĂ©. |
Autres primaires
Les prédicats -atime , -ctime , -depth , -group , -links , -mtime , -nogroup , -nouser , -perm , -print , -prune , -size , -user et -xdev sont tous gérés.
Le standard POSIX définit les parenthÚses « ( », « ) », la négation « ! » et les opérateurs logiques AND/OR, -a et -o .
Toutes les autres options, prĂ©dicats, expressions et ainsi de suite sont des extensions hors du standard POSIX. Beaucoup de ces extensions ne sont de toutes façons pas lâapanage de GNU find .
Le standard POSIX impose que find détecte les boucles.
Lâutilitaire find doit dĂ©tecter les boucles infinies, telles que le retour dans un rĂ©pertoire dĂ©jĂ visitĂ© qui est un parent du dernier fichier rencontrĂ©. Quand il dĂ©tecte une boucle infinie, find doit afficher un message de diagnostic sur la sortie dâerreur et essayer de revenir Ă sa position dâorigine ou sâarrĂȘter.
La commande find GNU est conforme Ă cette exigence. Le dĂ©compte des liens de rĂ©pertoires qui contiennent des liens en dur vers des rĂ©pertoires parents sera souvent infĂ©rieur Ă ce quâil serait autrement. Cela peut signifier que GNU find optimise parfois lâaccĂšs en Ă©vitant de parcourir un sous-rĂ©pertoire qui sâavĂšre ĂȘtre un lien vers un rĂ©pertoire parent. Bien que find ne parcourt pas le rĂ©pertoire dans ce cas prĂ©cis, il permet aussi dâĂ©viter lâĂ©mission dâun message dâavertissement. Cette façon de faire peut sembler gĂ©nĂ©ratrice dâerreurs, mais il est peu probable que quiconque puisse rĂ©ellement en ĂȘtre gĂȘnĂ©. Si lâoptimisation du parcours des feuilles (NDT : leaf) a Ă©tĂ© dĂ©sactivĂ©e avec -noleaf , cette entrĂ©e du rĂ©pertoire sera bel et bien parcourue, et le message dâavertissement Ă©mis si nĂ©cessaire. Les liens symboliques ne peuvent pas servir Ă crĂ©er de telles boucles dans le systĂšme de fichiers, par contre, si les options -L ou -follow sont actives, alors un message de diagnostic sera Ă©mis quand find rencontrera une boucle de liens symboliques. Comme pour les boucles contenant des liens en dur, lâoptimisation de parcours des feuilles signifie souvent que find sait quâil nâa pas Ă appliquer stat () ou chdir () sur le lien symbolique et donc que ce diagnostic est souvent inutile.
Lâoption -d est gĂ©rĂ©e pour des raisons de compatibilitĂ© avec divers systĂšmes BSD, mais prĂ©fĂ©rez plutĂŽt lâutilisation de lâoption -depth conforme Ă POSIX.
Le positionnement de la variable dâenvironnement POSIXLY_CORRECT ne modifie pas le comportement des tests -regex ou -iregex parce que ces tests ne sont pas dĂ©finis dans le standard POSIX.
VARIABLES DâENVIRONNEMENT
|
LANG |
Fournit une valeur par défaut pour les variables de localisation qui ne sont pas définies ou nulles. |
||
|
LC_ALL |
Si elle contient une chaĂźne de caractĂšres non vide, remplace les valeurs de toutes les autres variables de localisation. |
LC_COLLATE
Le standard POSIX exige que cette variable modifie le comportement de la recherche de motifs Ă lâĆuvre dans lâoption -name . Le GNU find utilise la fonction fnmatch (3) de la bibliothĂšque, et donc la gestion du LC_COLLATE dĂ©pend de la bibliothĂšque prĂ©sente sur votre systĂšme. Cette variable affecte Ă©galement lâinterprĂ©tation de la rĂ©ponse Ă -ok ; alors que la variable LC_MESSAGES sĂ©lectionne le motif effectivement utilisĂ© pour interprĂ©ter la rĂ©ponse Ă -ok , lâinterprĂ©tation des expressions entre crochets dans le motif sera affectĂ©e par LC_COLLATE .
LC_CTYPE
Cette variable contrĂŽle le traitement des classes de caractĂšres utilisĂ©es dans les expressions rationnelles ainsi que dans le test -name , si la fonction fnmatch (3) fournie par la bibliothĂšque le gĂšre. Cette variable altĂšre aussi lâinterprĂ©tation de toute classe de caractĂšres des expressions rationnelles utilisĂ©es pour analyser la rĂ©ponse donnĂ©e aux questions posĂ©es par -ok . La variable dâenvironnement LC_CTYPE modifie aussi la liste des caractĂšres dit non imprimables lors de lâaffichage des noms de fichiers. Consultez la section NOMS DE FICHIERS PEU COURANTS .
LC_MESSAGES
DĂ©finit la locale Ă utiliser pour les messages internationalisĂ©s. Lorsque la variable dâenvironnement POSIXLY_CORRECT est dĂ©finie, cela dĂ©termine aussi lâinterprĂ©tation des rĂ©ponses fournies aux questions posĂ©es par lâaction -ok .
NLSPATH
DĂ©termine lâendroit oĂč sont rangĂ©s les catalogues de messages localisĂ©s.
|
PATH |
Détermine les répertoires dans lesquels find cherchera les exécutables invoqués par -exec , -execdir , -ok et -okdir . |
POSIXLY_CORRECT
DĂ©termine la taille des blocs utilisĂ©s par -ls et -fls . Si POSIXLY_CORRECT est dĂ©fini, les blocs sont des unitĂ©s de 512 octets. Sinon, il sâagit dâunitĂ©s de 1024 octets.
DĂ©finir cette variable dĂ©sactive aussi par dĂ©faut les messages dâavertissement (câest-Ă -dire entraĂźne -nowarn ), puisque POSIX impose que, sauf dans le cas de lâaffichage de -ok , tous les messages affichĂ©s sur la sortie dâerreur doivent ĂȘtre des messages de diagnostic et ne doivent ĂȘtre gĂ©nĂ©rĂ©s que dans le cas dâune sortie avec un Ă©tat diffĂ©rent de zĂ©ro.
Lorsque POSIXLY_CORRECT nâest pas dĂ©fini, -perm +zzz est gĂ©rĂ© de la mĂȘme façon que -perm /zzz , lorsque +zzz nâest pas un mode symbolique valable. Lorsque POSIXLY_CORRECT est dĂ©fini, une telle demande est considĂ©rĂ©e comme une erreur.
Lorsque POSIXLY_CORRECT est dĂ©fini, la rĂ©ponse aux questions posĂ©es par lâaction -ok est analysĂ©e selon le catalogue des messages du systĂšme, et non selon les propres messages du catalogue de find .
|
TZ |
Modifie le fuseau horaire utilisé dans le format de certaines directives liées au temps dans -printf et -fprintf . |
EXEMPLES
Approche simple de « find|xargs »
|
- |
Rechercher les fichiers nommés core dans le répertoire /tmp ou dans ses sous-répertoires, puis les effacer. |
$ find /tmp -name core -type f -print | xargs /bin/rm -f
Remarquez que cela ne fonctionnera pas bien si des noms de fichiers comportent des retours Ă la ligne, des guillemets simples ou doubles ou des espaces.
Approche plus sûre de « find -print0 | xargs -0 »
|
- |
Chercher les fichiers qui sâappellent core dans le rĂ©pertoire /tmp et ses sous-rĂ©pertoires, puis les effacer, en veillant Ă ce que les noms de fichiers ou de rĂ©pertoires qui contiennent des guillemets simples ou doubles, des espaces ou des retours Ă la ligne soient correctement traitĂ©s. |
$ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
Le test -name est effectuĂ© avant celui -type afin dâĂ©viter un appel stat (2) sur tous les fichiers.
Remarquez quâil y a toujours un conflit entre le moment oĂč find explore la hiĂ©rarchie et affiche les noms de fichiers trouvĂ©s et celui oĂč le processus exĂ©cutĂ© par xargs agit sur le fichier.
Traitement de points de départ arbitraires
|
- |
Ătant donnĂ© quâun autre programme programme exĂ©cute un prĂ©-filtre et crĂ©e une Ă©norme liste de fichiers sĂ©parĂ©s par des caractĂšres NULL, les traiter comme points de dĂ©part et trouver tous les fichiers normaux parmi eux : |
$ proggy | find -files0-from - -maxdepth 0 -type f -empty
Lâutilisation de -files0-from - signifie lire les noms des points de dĂ©part Ă partir de lâ entrĂ©e standard , câest-Ă -dire par exemple dâun tube, et -maxdepth 0 assure que seules ces entrĂ©es explicitement dĂ©signĂ©es seront examinĂ©es sans parcours rĂ©cursif dans les rĂ©pertoires (au cas oĂč une des points de dĂ©part est un rĂ©pertoire).
Exécuter une commande pour chaque fichier
|
- |
Exécuter fichier sur chaque fichier du répertoire actuel ou de ses sous-répertoires. |
$ find . -type f -exec fichier '{}' \;
Remarquez que les accolades sont entourĂ©es par des guillemets afin dâempĂȘcher leur interprĂ©tation en tant que ponctuation du script dâinterprĂ©teur. De la mĂȘme façon, le point-virgule est protĂ©gĂ© grĂące Ă une barre oblique inverse, bien que lâapostrophe aurait aussi pu ĂȘtre utilisĂ©e dans ce cas.
Dans de nombreux cas, on pourrait prĂ©fĂ©rer la syntaxe â-exec ... +â , voire mĂȘme â-execdir ... +â , pour des raisons de performance et de sĂ©curitĂ©.
Explorer une fois le systÚme de fichiers - pour deux actions différentes
|
- |
Parcourir le systÚme de fichiers en une seule passe, stockant les fichiers et répertoires en setuid dans /root/suid.txt et les gros fichiers dans /root/grand.txt . |
$ find / \
\( -perm -4000 -fprintf
/root/suid.txt '%#m %u %p\n' \) , \
\( -size +100M -fprintf /root/grand.txt '%-10s %p\n'
\)
Cet exemple utilise le caractĂšre de suite de ligne '\' sur les deux premiĂšres lignes pour demander Ă lâinterprĂ©teur de continuer Ă lire la commande sur la ligne suivante.
Rechercher des fichiers par leur Ăąge
|
- |
Rechercher les fichiers dans votre dossier personnel qui ont été modifiés pendant les derniÚres vingt-quatre heures. |
$ find $HOME -mtime 0
Cette commande sâexprime de cette façon parce que la date de derniĂšre modification de chaque fichier est dĂ©coupĂ©e en tranche de 24 heures et le reliquat est Ă©liminĂ©. Cela veut dire que pour correspondre Ă -mtime 0 , un fichier doit avoir une antĂ©rioritĂ© de modification infĂ©rieure Ă 24 heures.
Rechercher les fichiers par leurs permissions
|
- |
Rechercher les fichiers qui offrent le droit dâexĂ©cution, mais qui ne sont pas lisibles. |
$ find /sbin /usr/sbin -executable \! -readable -print
|
- |
Rechercher les fichiers qui ont la permission de lire et dâĂ©crire pour leur propriĂ©taire et groupe et que les autres utilisateurs ne peuvent que lire. |
$ find . -perm 664
Les fichiers qui satisfont ces critĂšres, mais qui ont dâautres bits de permissions activĂ©s (par exemple si le fichier est exĂ©cutable par quelquâun) ne seront pas sĂ©lectionnĂ©s.
|
- |
Rechercher les fichiers qui ont la permission de lire et dâĂ©crire pour leur propriĂ©taire et leur groupe et que les autres utilisateurs peuvent lire, sans toutefois sâintĂ©resser Ă la prĂ©sence dâautres bits de permissions (le bit dâexĂ©cution par exemple). |
$ find . -perm -664
Cela trouvera un fichier dont le mode est, par exemple, 0777 .
|
- |
Rechercher les fichiers qui offrent le droit dâĂ©criture Ă quelquâun (son propriĂ©taire ou son groupe, ou bien nâimporte qui). |
$ find . -perm /222
|
- |
Rechercher les fichiers qui offrent le droit dâĂ©criture Ă leur propriĂ©taire ou Ă leur groupe. |
$ find . -perm /220
$ find . -perm /u+w,g+w
$ find . -perm /u=w,g=w
Ces commandes font toutes les trois la mĂȘme chose, mais la premiĂšre utilise le mode octal pour reprĂ©senter les modes du fichier, alors que les deux autres se servent de la forme symbolique. Ces fichiers nâont pas Ă offrir Ă la fois le droit dâĂ©criture au propriĂ©taire et au groupe, lâun ou lâautre suffira.
|
- |
Rechercher les fichiers qui offrent le droit dâĂ©criture Ă leur propriĂ©taire et Ă leur groupe. |
$ find . -perm -220
$ find . -perm -g+w,u+w
Ces deux commandes font la mĂȘme chose.
|
- |
Une recherche plus élaborée à partir des permissions. |
$ find . -perm -444 -perm
/222 \! -perm /111
$ find . -perm -a+r -perm /a+w \! -perm /a+x
Ces commandes recherchent toutes les deux les fichiers qui sont lisibles par tous ( perm -444 ou -perm -a+r ), ont au moins un des bits dâĂ©criture actif ( -perm /222 ou -perm /a+w ), mais qui ne sont exĂ©cutables par personne (respectivement ! -perm /111 et ! -perm /a+x ).
DĂ©couper â omettre des fichiers et des sous-rĂ©pertoires
|
- |
Copier le contenu de rĂ©pertoire-source dans rĂ©pertoire-cible , en omettant les fichiers ou les rĂ©pertoires nommĂ©s .snapshot (et tout ce quâils contiennent). Cela omet aussi les fichiers ou les rĂ©pertoires dont le nom se termine par « ~ », mais pas les autres contenus. |
$ cd
/répertoire-source
$ find . -name .snapshot -prune -o \( \! -name '*Ë'
-print0 \) \
| cpio -pmd0 /dest-dir
La structure -prune -o \( ... -print0 \) est trĂšs connue. LâidĂ©e ici, câest que lâexpression avant -prune indique les fichiers Ă couper. Toutefois, lâaction -prune renvoie vrai, donc le -o qui suit nâapplique lâexpression Ă sa droite que sur les rĂ©pertoires qui nâont pas Ă©tĂ© coupĂ©s (le contenu des rĂ©pertoires coupĂ©s nâest mĂȘme pas consultĂ©, leur contenu nâest donc pas pertinent). Lâexpression Ă droite du -o est entre parenthĂšses pour des raisons de clartĂ© uniquement. Lâaccent est mis ici sur le fait que lâaction -print0 ne sâexĂ©cute que pour les items qui nâont pas Ă©tĂ© coupĂ©s par -prune . Le « et  » implicite entre les conditions de tests est plus prioritaire que le -o , mais les parenthĂšses aident Ă comprendre ce quâil se passe ici.
|
- |
Ătant donnĂ© les rĂ©pertoires de projets suivants et les rĂ©pertoires dâadministration de leurs systĂšmes de gestion de configuration, effectuer une recherche efficace dans les racines des projets : |
$ find repo/ \
\( -exec test -d '{}/.svn'
\; \
-or -exec test -d '{}/.git' \; \
-or -exec test -d '{}/CVS' \; \
\) -print -prune
Exemple de sortie :
repo/project1/CVS
repo/gnu/project2/.svn
repo/gnu/project3/.svn
repo/gnu/project3/src/.svn
repo/project4/.git
Dans cet exemple, -prune Ă©vite lâinutile inspection des rĂ©pertoires qui ont dĂ©jĂ Ă©tĂ© dĂ©couverts (ne cherche pas par exemple dans project3/src puisquâil a dĂ©jĂ Ă©tĂ© trouvĂ© dans project3/.svn ) tout en sâassurant que les rĂ©pertoires frĂšres ( project2 et project3 ) le sont.
Autres exemples utiles
|
- |
Rechercher plusieurs types de fichiers. |
$ find /tmp -type f,d,l
Rechercher des fichiers, des répertoires et des liens symboliques dans le répertoire /tmp en passant ces types sous forme de liste séparée par des virgules (extension GNU), ce qui est équivalent à la commande plus longue mais plus portable :
$ find /tmp \( -type f -o -type d -o -type l \)
|
- |
Rechercher les fichiers du nom particulier needle et arrĂȘter immĂ©diatement dĂšs quâon trouve le premier. |
$ find / -name needle -print -quit
|
- |
DĂ©monstration de lâinterprĂ©tation des directives de format %f et %h de lâaction -printf dans certains cas de niche. Voici un exemple comprenant une sortie. |
$ find . .. / /tmp
/tmp/TRACE compile compile/64/tests/find -maxdepth 0 -printf
â[%h][%f]\nâ
[.][.]
[.][..]
[][/]
[][tmp]
[/tmp][TRACE]
[.][compile]
[compile/64/tests][find]
CODE DE RETOUR
find sâarrĂȘte en renvoyant la valeur de retour 0 si tous les fichiers ont Ă©tĂ© traitĂ©s avec succĂšs, ou en renvoyant une valeur supĂ©rieure Ă 0 si une erreur est survenue. Cette information est volontairement trĂšs floue. ConsidĂ©rez simplement quâen cas de valeur de retour diffĂ©rente de zĂ©ro, vous ne devez pas vous fier Ă lâexactitude des rĂ©sultats fournis par find .
Quand une erreur se produit, find peut sâarrĂȘter immĂ©diatement sans terminer les actions spĂ©cifiĂ©es. Par exemple, il se peut que certains points de dĂ©part ne soient pas examinĂ©s ou que des appels en attente de programmes par -exec ... {} + ou -execdir ... {} + ne se fassent pas.
HISTORIQUE
Le programme find est apparu dans la version 5 dâUnix faisant partie du « Programmerâs Workbench project » et a Ă©tĂ© Ă©crit par Dick Haight. Le manuel de Doug McIlroy A Research UNIX Reader : Annotated Excerpts from the Programmerâs Manual, 1971-1986 fournit quelques dĂ©tails supplĂ©mentaires ; il est possible de le lire en ligne Ă <https://www.cs.dartmouth.edu/Ëdoug/reader.pdf>.
GNU find a Ă©tĂ© Ă©crit Ă lâorigine par Eric Decker et amĂ©liorĂ© par David MacKenzie, Jay Plett et Tim Wood. LâidĂ©e pour find -print0 et xargs -0 vient de Dan Bernstein.
COMPATIBILITĂ
Ă partir de findutils-4.2.2, les mĂ©tacaractĂšres de lâinterprĂ©teur (« * », « ? » ou « [] » par exemple) utilisĂ©s dans les motifs des noms de fichier trouveront les fichiers commençant par « . » parce que lâinterprĂ©tation 126 dâIEEE POSIX lâimpose.
Ă partir de findutils-4.3.3, -perm /000 explore maintenant tous les fichiers plutĂŽt quâaucun.
La gestion des nanosecondes dans les horodatages a été implémentée dans findutils-4.3.3.
|
Lâaction -delete force find Ă envoyer un code de retour non nul en cas dâĂ©chec Ă partir de findutils-4.3.11. Toutefois, find ne sâinterrompra pas immĂ©diatement. Dans les versions prĂ©cĂ©dentes, le code de retour de find nâĂ©tait pas modifiĂ© par lâĂ©chec de -delete . |
La syntaxe -perm +MODE a été supprimée dans findutils-4.5.12, pour -perm /MODE . La syntaxe +MODE était obsolÚte depuis findutils-4.2.21 qui a été publié en 2005.
FAUX BOGUES
Surprises avec la prĂ©cĂ©dence dâun opĂ©rateur
La commande find . -name fichier1 -o -name fichier2 -print nâaffichera jamais fichier1 , car elle revient en fait Ă find . -name fichier1 -o \( -name fichier2 -a -print \) . Rappelez-vous que la prĂ©cĂ©dence de -a est supĂ©rieure Ă celle de -o et quand aucun opĂ©rateur nâest spĂ©cifiĂ© entre les tests, -a est prĂ©sumĂ©.
Message dâerreur âpaths must precede expressionâ
$ find .
-name *.c -print
find: paths must precede expression
find: possible unquoted pattern after predicate
â-nameâ?
Cela arrive
quand lâinterprĂ©teur pourrait dĂ©velopper
le motif
*.c
Ă plus dâun nom de fichier
existant dans le répertoire actuel et le passage des
noms de fichier qui en résultent à la ligne de
commande
find
devient :
find . -name frcode.c locate.c word_io.c -print
Cette commande ne va bien entendu pas fonctionner, car le
prédicat
-name
ne permet exactement
quâun motif en argument. PlutĂŽt que de faire
comme ça, vous devriez encapsuler le motif entre des
guillemets ou échapper les jokers, permettant ainsi
Ă
find
dâutiliser le motif avec le joker
lors de la recherche dâun nom de fichier
correspondant, au lieu des noms de fichier
dĂ©veloppĂ©s par lâinterprĂ©teur
parent :
$ find . -name '*.c' -print
$ find . -name \*.c -print
BOGUES
Des problĂšmes de sĂ©curitĂ© se posent, inhĂ©rents au comportement de find tel que dĂ©fini par le standard POSIX, et qui ne peuvent donc ĂȘtre rĂ©solus. Par exemple, lâaction -exec est dangereuse par nature et lâutilisation de -execdir est prĂ©fĂ©rable.
La variable dâenvironnement LC_COLLATE nâa aucun effet sur lâaction -ok .
SIGNALER DES BOGUES
Aide en ligne de
GNU coreutils :
<https://www.gnu.org/software/findutils/#get-help>
Signaler toute erreur de traduction Ă
<https://translationproject.org/team/fr.html>
Signaler toute autre erreur au moyen du systÚme de suivi de bogues GNU Savannah :
<https://savannah.gnu.org/bugs/?group=findutils>
Les sujets généraux concernant le paquet GNU findutils sont discutés sur la liste de diffusion bug-findutils :
<https://lists.gnu.org/mailman/listinfo/bug-findutils>
COPYRIGHT
Copyright ©
1990â2024 Free Software Foundation, Inc. Licence
GPLv3+ : GNU GPL version 3 ou supérieure
<https://gnu.org/licenses/gpl.html>.
Ce programme est un logiciel libre. Vous pouvez le modifier
et le redistribuer. Il nây a AUCUNE GARANTIE dans la
mesure autorisée par la loi.
VOIR AUSSI
chmod (1), locate (1), ls (1), updatedb (1), xargs (1), lstat (2), stat (2), ctime (3) fnmatch (3), printf (3), strftime (3), locatedb (5), regex (7)
Documentation
complÚte :
<https://www.gnu.org/software/findutils/find>
aussi disponible localement Ă lâaide de :
info find
TRADUCTION
La traduction française de cette page de manuel a été créée par Florentin Duneau <fduneau@gmail.com>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Sylvain Cherrier <sylvain.cherrier@free.fr>, Nicolas François <nicolas.francois@centraliens.net>, Jean-Philippe MENGUAL <jpmengual@debian.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .