Kaip aš galiu rekursiškai surasti visus dabartiniuose ir poaplankiuose esančius failus, remiantis pakaitomis?

Kaip aš galiu rekursiškai surasti visus dabartiniuose ir poaplankiuose esančius failus, remiantis pakaitomis?

971
06 мая '11 в 2:01 2011-05-06 02:01 Johnas paprašytas 06 gegužės 11 d. 2:01 2011-05-06 02:01
@ 9 atsakymai

Naudokite šią paiešką:

 find . -name "foo*" 

find reikia ir pradinio taško . (taškas) nurodo esamą katalogą.

1459
06 мая '11 в 2:03 2011-05-06 02:03 atsakymas pateikiamas tux21b 06 Gegužės 11 d. 2:03 2011-05-06 02:03

Dažnai patogu rasti vamzdynus grepe; ji suteikia jums visišką reguliarių išraiškų galią, kad savavališkai atitiktų pakaitos simbolius.

Pvz., Norėdami rasti visus failus, kuriuose failo pavadinime yra didžiosios ir mažosios raidės „foo“:

border=0
 ~$ find . -print | grep -i foo 
135
15 авг. Paul Whipp atsakymas 15 rug. 2012-08-15 09:56 '12 at 9:56 2012-08-15 09:56

find visus failus, atitinkančius modelį:

 find . -name "*foo" 

Tačiau, jei norite vaizdo:

 tree -P "*foo" 

Tikiuosi, kad tai padės!

87
06 мая '11 в 2:15 2011-05-06 02:15 Atsakymą pateikė „ IslandCow“ gegužės 06 d. 11 val. 2:15 2011-05-06 02:15
 find -L . -name "foo*" 

Kai kuriais atvejais man reikia -L parinkties, kad galėtumėte tvarkyti simbolines nuorodas kataloge. Pagal nutylėjimą simbolinės nuorodos ignoruojamos. Tokiais atvejais tai buvo gana paini, nes aš pakeisčiau katalogą į antrinį katalogą ir pamatysiu failą, kuris atitiktų modelį, bet nerado failo pavadinimo. Naudojant -L išsprendžia šią problemą. Nuorodų į paieškos simbolius parametrai: -P -L -H

10
14 янв. atsakymas pateikiamas 14 d. 2017-01-14 05:47 '17 at 5:47 2017-01-14 05:47

Jei apvalkalas palaiko pratęstą shopt -s globstar (įjunkite jį: shopt -s globstar ), galite naudoti:

 echo **/*foo* 

surasti visus failus ar aplankus rekursyviai. Tai palaiko „bash 4“, „zsh“ ir panašūs korpusai.

10
13 янв. atsakymas pateikiamas kenorb 13 jan. 2017-01-13 19:23 '17 19:23 PM 2017-01-13 19:23
 find <directory_path> -type f -name "<wildcard-match>" 

Pakeitus atitikimą, galite nurodyti, pavyzdžiui, eilutę, kurią norite suderinti. * .c (visiems c failams)

8
05 февр. Atsakymą pateikė P_Jain 05 vasaris. 2017-02-05 16:32 '17 ne 4:32 2017-02-05 16:32

ieškoti failų
find / -xdev -name settings.xml → visą kompiuterį
find ./ -xdev -name settings.xml → dabartinį katalogą ir jo katalogą

failams su plėtinio tipu

 find . -type f -name "*.iso" 
2
31 мая '17 в 11:47 2017-05-31 11:47 atsakymą Alberto davė gegužės 31 d. 17, 11:47

Galite naudoti:

# rasti. - tipo f-name 'text_for_search'

Jei norite naudoti regx -iname

# rasti. - tipas f - vardas 'text_for_search'

1
29 окт. spalio 29 d. vartotojo8848899 atsakymas 2017-10-29 19:09 '17, 07:09 pm 2017-10-29 19:09

Standartinis būdas ieškoti rekursinio failo ir prieinamas daugeliu atvejų

 find . -name "filepattern" 

Jis pradeda failo arba šablono pavadinimo rekursinį judėjimą iš dabartinio katalogo, kuriame esate. Naudodami komandą „Find“, galite naudoti pakaitos simbolius ir įvairius klavišus, kad pamatytumėte išsamų parinkčių sąrašą

 man find 

arba jei jūsų sistemoje nėra rankinių puslapių

 find --help 

Tačiau yra daugiau modernių ir greitesnių įrankių, kurie perkeliami per visą failų sistemą ir indeksuoja failus. Vienas iš šių bendrų įrankių yra lokalizuoti arba sulenkti / sulyginti, turėtumėte patikrinti savo OS vadovą, kaip jį įdiegti, ir įdiegus ją, reikia paleisti duomenų bazę, jei scenarijaus diegimas to nepadaro, tai galima atlikti rankiniu būdu, įvesdami

 sudo updatedb 

Ir, jei norite naudoti tam tikrą failo tipą.

 locate filename 

Arba, jei norite ieškoti failo pavadinimo arba patterio iš dabartinio katalogo, galite įvesti:

  pwd | xargs -n 1 -I {} locate "filepattern" 

Jis peržiūrės failų duomenų bazę ir greitai išspausdins įvestą modelį atitinkančius kelio pavadinimus. Norėdami peržiūrėti pilną lokalizavimo parinkčių sąrašą, įveskite: locate --help arba man locate

Be to, galite sukonfigūruoti vietą, kurioje duomenų bazės atnaujinimas planuojamais laikais bus naudojamas naudojant cron užduotį, todėl pavyzdinis cronas, kuris atnaujina db 1:00, atrodys taip:

 0 1 * * * updatedb 

Šios cron užduotys turi būti sukonfigūruotos naudojant šaknį, nes atnaujinti reikia root teisių, kad galėtumėte perkelti visą failų sistemą.

1
09 авг. Aleksandar Pavić atsakymas 09 rugpjūčio mėn 2017-08-09 09:27 '17 at 9:27 am 2017-08-09 09:27

Kiti klausimai apie „ žymes arba Užduoti klausimą