logo

Trobeu l'ordre a Linux/Unix amb exemples

L'ordre find ens ajuda a trobar un fitxer determinat dins d'un directori. S'utilitza per trobar la llista de fitxers per a les diferents condicions com ara el permís, la propietat de l'usuari, la modificació, la data/hora, la mida i molt més.

En sistemes operatius semblants a Unix i en altres, l'ordre find és una utilitat de línia d'ordres que troba fitxers sobre la base d'uns quants formats especificats per l'usuari i imprimeix el nom de camí de tots els objectes coincidents o, si es demanen altres accions, implementa aquesta acció a tots els objectes coincidents.

Inicia una cerca des d'una ubicació d'inici desitjada i, després d'això, recorre recursivament els directoris (nodes) d'una estructura jeràrquica (generalment un arbre). L'ordre find pot cercar i recórrer des de diferents sistemes de particions de fitxers que pertanyen a un únic o més dispositiu d'emmagatzematge al directori inicial.

El format de cerca conté un patró de concordança amb el nom del fitxer o l'interval de temps per a la concordança amb el temps de modificació o el temps d'accés al fitxer. L'ordre find proporciona una llista de tots els fitxers del directori de treball actual per defecte. Tanmateix, els usuaris poden restringir la cerca al nivell màxim desitjat al directori inicial.

Els programes de localització associats apliquen una base de dades de fitxers indexada obtinguda de l'ordre fine per oferir una tècnica més ràpida per cercar tot el sistema de fitxers per nom.

La utilitat de cerca ve per defecte amb la majoria dels distribucions de Linux , de manera que no necessitem instal·lar cap paquet addicional. És un dels comandaments més essencials i utilitzats del Linux sistema.

 find 

Les dues opcions determinen com trobar ha de considerar els enllaços simbòlics. La naturalesa per defecte és mai buscar enllaços simbòlics. La bandera, és a dir, -L , portarà trobar a buscar vincles simbòlics. La bandera, és a dir, -H , només buscarà enllaços simbòlics mentre continua amb els arguments de la línia d'ordres. Els indicadors s'esmenten a l'estàndard POSIX per a l'ordre find. Una extensió bàsica és una bandera, és a dir, -P , per desactivar explícitament l'enllaç simbòlic següent.

Almenys un camí ha d'anticipar l'expressió. L'ordre find pot interpretar internament els comodins, i les ordres s'han de citar acuradament per gestionar el shell globbing.

Els components d'expressió estan aïllats pel límit de l'argument de la línia d'ordres, generalment indicat com a espai en blanc dins de la sintaxi de l'intèrpret d'ordres. Es consideren del costat esquerre al costat dret. Poden incloure components lògics com OR i AND, així com predicats (accions i filtres). GNU find conté diverses altres característiques no esmentades per POSIX.

Els símbols següents s'utilitzen per especificar el directori:

(.) : per al nom del directori actual

(/) : Per al directori arrel

Breu història de l'ordre Find

L'ordre find es va produir a la versió 5 d'Unix com a element del fitxer Banc de treball del programador projecte i va ser especificat per Dick Haight amb cpio, que es van desenvolupar per utilitzar-los conjuntament.

Originalment, la implementació GNU de l'ordre find va ser especificada per Eric Decker . Més tard, va ser desenvolupat per David MacKenzie, Tim Wood , i Jay Plett . A més, l'ordre find s'ha portat al sistema operatiu IBM i.

alinear la imatge CSS

Predicats

Les primàries molt utilitzades són:

    -Patró de nom:Comprova que el nom del fitxer sigui el mateix que el patró shell-glob donat o no.-Tipus tipus:Comprova que el fitxer sigui un tipus proporcionat.-imprimir:Sempre dóna el veritable valor. Imprimeix el nom del fitxer actual i una nova línia a stdout.-print0:Sempre dóna el veritable valor. Imprimeix el nom del fitxer actual i un caràcter nul a stdout. POSIX no necessita.-exec programa [argument ...];:Sempre dóna el veritable valor. Executa un programa amb els arguments donats i la ruta del fitxer actual.-exec programa [argument...] { } +:Sempre dóna el veritable valor. Executa un programa amb els arguments donats i amb el màxim de camins possibles. Per a gairebé totes les implementacions, altres {} ocurrències signifiquen còpies addicionals del nom donat (aspecte que POSIX no necessita).-ok programa [argument ...];:És el mateix que -exec, però retornarà fals o true si el programa dóna 0.

Trobeu els valors predeterminats per implementar -print en cas que les condicions siguin certes si l'expressió no utilitza cap de -ok, -exec, -print o -print0.

101 milions

Operadors

Els operadors milloren les expressions d'ordres find. S'esmenten per ordre de precedència descendent:

    ( expr ):Aquest operador pot forçar la precedència.! expr:Si expr retorna false, retorna true.
  • expr1 expr2 (o expr1 -a expr2: AND. expr2 no s'avalua si expr1 és falsa.
  • expr1 -o expr2 : O. expr2 no s'avalua si expr1 és certa.

Exemples de l'ordre find

Vegem els següents exemples de l'ordre find:

Cerca fitxers per nom

Podem cercar tots els fitxers que acabin amb l'extensió '.txt.' Per fer-ho, executeu l'ordre següent:

 find . -name '*.txt' 

L'ordre anterior enumerarà tots els fitxers de text del directori de treball actual. Considereu la sortida següent:

Cerca de Linux

A partir de la sortida anterior, tots els fitxers que tenen l'extensió '.txt' es mostren amb l'ordre find.

Cercar fitxers per tipus

El paràmetre '-type' s'utilitza per especificar el tipus de fitxer.

Alguns dels tipus de fitxers són els següents:

  • f: fitxer normal
  • d: directori
  • l: enllaços simbòlics
  • c: dispositius de caràcters
  • b: bloquejar dispositius

Considereu l'ordre següent:

 find . -type d -name '*.bak' 

L'ordre anterior enumerarà tots els directoris que tenen l'extensió '.bak'. Considereu la sortida següent:

Cerca de Linux

A la sortida anterior, l'ordre 'find . -type d -name '*.bak' mostra tots els directoris que acaben amb '.bak'.

Cerca fitxers més nous

El paràmetre '-newer' ajuda a cercar els fitxers que són més nous que el fitxer esmentat. Considereu l'ordre següent:

 find . -newer msg.txt 

L'ordre anterior mostrarà tots els fitxers més nous que ' msg.txt ' del directori de treball actual. Considereu la sortida següent:

Cerca de Linux

A partir de la sortida anterior, tots els fitxers que es mostren són més nous que el fitxer 'msg.txt'.

objecte de la matriu en java

Cercar i suprimir un fitxer

L'opció '-delete' s'utilitza per eliminar un fitxer específic. Hem de tenir molta cura en utilitzar aquesta ordre perquè no hi ha cap opció de desfer si s'executa un cop. Considereu l'ordre següent:

 find . -name Demo.txt -delete 

L'ordre anterior suprimirà el fitxer 'Demo.txt' del directori de treball actual. Considereu la sortida següent:

Cerca de Linux

Trobeu un directori

L'opció 'tipus -d' s'utilitza per trobar un directori. Considereu l'ordre següent:

 find . type -depth -name Newdirectory 

L'ordre anterior trobarà la ubicació 'Nou directori'. Considereu la sortida següent:

Cerca de Linux

Cerca fitxers per hora de modificació

L'opció '-mtime', seguida del nombre de dies, s'utilitza per trobar els fitxers per modificació. El nombre de dies pot ser positiu o negatiu. El valor negatiu s'utilitzarà per menys de com -1 s'utilitza per a l'últim dia, i de la mateixa manera, +1 trobarà el fitxer de fa més d'un dia. Considereu l'ordre següent:

 find ./Newdirectory -mtime -1 

L'ordre anterior trobarà els fitxers modificats durant l'últim dia. Considereu la sortida següent:

Cerca de Linux

Cerca fitxers amb permís

L'opció '-perm' s'utilitza per trobar fitxers amb permís. Executeu l'ordre find amb l'opció '-perm' i passeu el valor requerit. Considereu l'ordre següent:

 find ./ -perm 777 

L'ordre anterior enumerarà els fitxers del directori especificat que tothom podria llegir, escriure i executar.

Cerca i substitueix fitxers

Per trobar i substituir fitxers, hem de combinar l'ordre find amb l'ordre sed. Per operar amb fitxers, utilitzeu l'opció '-exec' amb l'ordre find. Considereu l'ordre següent:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

des de l'ordre anterior, es substituirà l'ocurrència especificada. Considereu la sortida següent:

Cerca de Linux

Trobeu text dins de diversos fitxers

Podem fer una altra combinació de l'ordre find amb l'ordre grep per trobar el text dels diferents fitxers. Considereu l'ordre següent:

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

L'ordre anterior trobarà les línies que contenen el text 'demo' de tots els fitxers de text dins del directori 'Nou directori'. Considereu la sortida següent:

Cerca de Linux

A la sortida anterior, podem veure que s'han mostrat les línies amb el text 'demo'.

Cerca a tots els directoris

 $ find / -name file1 -type f -print 

L'ordre anterior troba tots els directoris d'un fitxer normal el títol del qual és fitxer1 i l'imprimeix a la pantalla. En general, no és una bona idea cercar fitxers d'aquesta manera. Pot trigar una bona quantitat de temps. Per tant, el millor és esmentar el directori. Alguns sistemes operatius poden muntar sistemes de fitxers (dinàmics) que no són favorables a l'ordre find. És possible que els noms de fitxers més complicats que contenen caràcters exclusius de l'intèrpret d'ordres requereixin tancar-los entre cometes simples.