find
on komento tiedostojärjestelmän kohteiden rekursiiviseen suodattamiseen yksinkertaisen ehdollisen mekanismin perusteella. Käytä find
:tä etsiessäsi tiedostoa tai hakemistoa tiedostojärjestelmästäsi. Käyttämällä -exec
-lippua tiedostot voidaan löytää ja käsitellä välittömästi samassa komennossa. Seuraava esimerkki etsii *.err
-tiedostoja hakemistosta /home/username/
ja kaikista alihakemistoista:
find /home/username/ -name "*.err"
Konsolissa pitäisi näkyä samankaltainen tuloste:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
- Yleiset Linuxin hakukomennot ja syntaksi
- Tiedoston etsiminen Linuxissa tiedostonimen avulla
- Tiedoston etsiminen nykyisestä hakemistosta Etsi-komennolla
- Kuvatiedostojen etsiminen Linuxissa komentorivillä
- Tyhjän tiedoston etsiminen hakemistosta komentorivin avulla
- Options and Optimizations for Finding Files in Linux Using the Command Line
- Tiedostojen etsiminen Linuxissa muutosajankohdan mukaan komentorivin avulla
- Käytä Grep-ohjelmaa tiedostojen etsimiseen Linuxissa komentorivin avulla
- Tiedostojen käsitteleminen ja etsiminen Find-komennon avulla Linuxissa
- How to Find and Delete Files Using the Linux Command Line
Yleiset Linuxin hakukomennot ja syntaksi
Komento find
on tavallisesti seuraavassa muodossa:
find options starting/path expression
- Aattribuutilla
options
ohjataan prosessinfind
käyttäytymistä ja optimointitapaa. - Aattribuutti
starting/path
määrittelee ylimmän tason hakemiston, jossafind
aloittaa suodatuksen. - Aattribuutti
expression
ohjaa testejä, jotka etsivät hakemistohierarkiasta tulosteen tuottamiseksi.
Tiedoston etsiminen Linuxissa tiedostonimen avulla
Tiedoston etsimiseen tiedostonimen avulla käytetään syntaksia find -name filename
. Polun pois jättäminen etsii tiedostoa koko levyltä. Voit esimerkiksi etsiä example.err
-nimisen tiedoston, joka sijaitsee hakemistossa /home/username
, seuraavalla komennolla:
find -name example.err
Tulosteen pitäisi olla samankaltainen:
./username/example.err
Tiedoston etsiminen nykyisestä hakemistosta Etsi-komennolla
Katso esimerkkihakemistorakennetta ja tiedostoja. Niihin viitataan kaikkialla tämän oppaan esimerkeissä.
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err├── directory_2│ └── example.err├── directory_3│ └── example.err├── image01.png├── web_files│ ├── app.html│ ├── cb=gapi.loaded_0│ ├── edit.html│ ├── m=_b,_tp│ ├── rs=AA2YrTtgyE1yYXiu-GuLS6sbJdYr0u8VBQ│ ├── rs=AA2YrTvod91nzEJFOvvfJUrn6_vLwwY0bw│ ├── saved_resource.html│ ├── single.html│ └── unnamed.jpg├── web.html└── example.err
Jos olet hakemistossa directory_1
ja haluat etsiä tiedoston example.err
hakemistosta tai sen alihakemistoista, voit antaa seuraavan komennon:
find . -name example.err
Tulosteesi muistuttaa seuraavaa:
./example.err./directory_1/example.err
Tuloste kuvastaa hakemistorakennetta directory_1
:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
Kuvatiedostojen etsiminen Linuxissa komentorivillä
Viitaten edellisen kappaleen tiedostorakenteeseen, on olemassa kuva nimeltä image01.png
, joka sijaitsee hakemistorakenteen juuressa (/
)s.
Tiedoston image01.png
löytämiseksi suorita seuraava find
-komento, joka etsii kaikki /
-hakemiston /
sisälle tallennetut .png
-tiedostot.
find -name *.png
Tulosteen pitäisi olla samankaltainen:
./image01.png
Vaihda kuvatiedostotyyppiä ja etsi juurihakemiston (/
) sisältämät .jpg
-tiedostot:
find -name *.jpg
Tuloste muistuttaa esimerkkiä. Katso tiedoston sijaintia edellisessä osassa olevasta esimerkkihakemistorakenteesta.
./web_files/unnamed.jpg
Tyhjän tiedoston etsiminen hakemistosta komentorivin avulla
Tyhjän tiedoston etsiminen hakemistosta komentorivin avulla tapahtuu antamalla seuraava komento:
find . -type f -empty
Jos tulostetta ei palauteta, nykyisessä hakemistossa ei ole tyhjää tiedostoa.
Options and Optimizations for Finding Files in Linux Using the Command Line
Default configuration for find
ignoressymbolic links. Jos haluat, että find
seuraa ja palauttaa symbolisia linkkejä, lisää komentoon -L
-vaihtoehto alla esitetyllä tavalla:
find -O3 -L /var/www/ -name "*.html"
Tämä komento ottaa käyttöön suurimman optimointitason (-O3
) ja antaa find
:n seurata symbolisia linkkejä (-L
). find
etsii koko /var/www/
:n alla olevasta hakemistopuusta tiedostoja, joiden pääte on .html
.
find
optimoi suodatusstrategiansa suorituskyvyn parantamiseksi. Kolme käyttäjän valittavissa olevaa optimointitasoa on määritetty -O1
, -O2
ja -O3
. Optimointi -O1
on oletusarvo, ja se pakottaa find
suodattamaan tiedostonimen perusteella ennen kaikkien muiden testien suorittamista.
Tason -O2
optimointi priorisoi tiedostonimensuodatuksen, kuten -O1
:ssä, ja suorittaa sen jälkeen kaiken tiedostotyyppisuodatuksen ennen muiden resursseja vaativampien ehtojen suorittamista. Tason -O3
optimointi mahdollistaa find
:n tiukimman optimoinnin ja järjestää kaikki testit uudelleen niiden suhteellisten kustannusten ja onnistumisen todennäköisyyden perusteella.
Komento | Kuvaus |
---|---|
-O1 |
Suodattaa ensin tiedostonimen perusteella (oletus). |
-O2 |
Tiedoston nimi ensin, sitten tiedostotyyppi. |
-O3 |
Mahdollistaa find järjestää haun automaattisesti uudelleen resurssien tehokkaan käytön ja todennäköisyyden perusteella. onnistumisesta |
-maxdepth X |
Haku nykyisestä hakemistosta sekä kaikista alihakemistoista X tasoa syvemmältä. |
-iname |
Haku huomioimatta tekstitapausta. |
-not |
Palauttaa vain sellaiset hakutulokset, jotka eivät sovi testitapaukseen. |
-type f |
Tiedostojen haku. |
-type d |
Hakemistojen haku. |
Tiedostojen etsiminen Linuxissa muutosajankohdan mukaan komentorivin avulla
Komennolla find
voi suodattaa hakemistohierarkian sen perusteella, milloin tiedostoa on viimeksi muutettu. Esimerkiksi seuraava komento etsii kaikki tiedostot, joilla on .err
-pääte ja joita on muutettu viimeisten 7 päivän aikana:
find / -name "*err" -mtime -7
Esimerkkikomento palauttaa seuraavan tulosteen:
/home/username/directory_3/example.err/home/username/username/example.err/home/username/username/directory_2/example.err/home/username/username/directory_1/example.err/home/username/username/directory_1/subdirectory_1/example.err
Käytä Grep-ohjelmaa tiedostojen etsimiseen Linuxissa komentorivin avulla
Komento find
pystyy suodattamaan hakemistohierarkian vain tiedoston nimen ja metatietojen perusteella. Jos haluat tehdä haun tiedoston sisällön perusteella, käytä esimerkiksiegrep-työkalua. Tarkastellaan seuraavaa esimerkkiä:
find . -type f -exec grep "test" '{}' \; -print
Tämä komento hakee jokaisen nykyisen hakemistohierarkian (.
) objektin, joka on tiedosto (-type f
), ja suorittaa sitten komennon grep "test"
jokaiselle ehdot täyttävälle tiedostolle. Vastaavat tiedostot tulostetaan näytölle (-print
). Suljetut aaltosulkeet ({}
) ovat paikanvaraaja find-tuloksille. {}
on suljettu yksinkertaisiin lainausmerkkeihin ('
), jotta grep
:lle ei annettaisi epämuodostunutta tiedostonimeä. Komento -exec
lopetetaan puolipisteellä (;
), joka on vältettävä (\;
), jotta komentotulkki ei tulkitsisi sitä.
Esimerkissä käytetyssä tiedostossa (example.err
) on sisällä tekstiä, jossa lukee ”test”. Kun suoritat esimerkkikomennon, näet samanlaisen tulosteen:
test./directory_3/example.errtest./example.errtest./directory_2/example.errtest./directory_1/example.errtest./directory_1/subdirectory_1/example.err
Grep tunnisti kaikki nykyisen työhakemiston sisällä olevat tiedostot, jotka sisältävät merkkijonon ”test”.
Huomautus
Ennen kuin
find
-komennon-exec
-optio toteutettiin, voit tuottaa yllä olevan esimerkin kaltaisen tulosteen käyttämälläxargs
-komentoa:find . -type f -print | xargs grep "test"
Tiedostojen käsitteleminen ja etsiminen Find-komennon avulla Linuxissa
Vaihtoehto -exec
ajaa komentoja jokaista find
-lauseketta vastaavaa kohdetta vastaan. Tarkastellaan seuraavaa esimerkkiä:
find . -name "example.err" -exec chmod o+r '{}' \;
Tämä suodattaa jokaisen objektin nykyisessä hierarkiassa (.
) rc.conf
-nimisten tiedostojen osalta ja suorittaa komennon chmod o+r
muuttaakseen komennon find
tulosten tiedostojen käyttöoikeuksia.
Esimerkkikomento ajaa ja suorittaa -exec
-vaihtoehdon find
prosessin find
juurihakemistossa. Käyttämällä -execdir
voit suorittaa määritetyn komennon hakemistossa, jossa ottelu sijaitsee. Tämä saattaa lieventää tietoturvaongelmia ja tuottaa parempaa suorituskykyä joissakin toiminnoissa.
Vaihtoehdot -exec
tai -execdir
suoritetaan ilman lisäkehotuksia. Jos haluat, että sinua kehotetaan ennen toiminnan aloittamista, korvaa -exec
-ok
:lla tai -execdir
-okdir
:lla.
How to Find and Delete Files Using the Linux Command Line
Caution
Käytä tätä vaihtoehtoa äärimmäisen varovaisesti.
Lisää vaihtoehto -delete
täsmäävän lausekkeen loppuun, jos haluat poistaa kaikki täsmäävät tiedostot. Käytä tätä vaihtoehtoa, kun olet varma, että tulokset täsmäävät vain niihin tiedostoihin, jotka haluat poistaa.
Alla olevassa esimerkissä find
etsii rekursiivisesti kaikki tiedostot hierarkiassa alkaen nykyisestä hakemistosta ja poistaa kaikki tiedostot, jotka päättyvät .err
-päätteeseen:
find . -name "*.err" -delete
Vielä kysyttävää?
Liity yhteisöömme ja kirjoita kysymyksesi, jotta muut Linode- ja Linux-asiantuntijat voivat auttaa sinua.
Aiheeseen liittyvät kysymykset: