Haluan tietää merkityksen {} + merkityksestä exec -komento ja mikä on ero {} + ja {} \; välillä. Tarkemmin sanottuna, mikä on ero näiden kahden välillä:

find . -type f -exec chmod 775 {} + find . -type f -exec chmod 775 {} \; 

kommentit

  • Se on kuvattu man find(1) -kohdassa yksityiskohtaisesti, helposti kaikkien löydettävissä. Älä ' ole laiska.
  • Kiitos rakas Miroslav, etsin hakemistosta man exec!
  • Ah, en ollut koskaan ennen törmännyt {} + -käyttöön. Käytän normaalisti siihen xargsia (ja usein find ... -print0 | xargs -0 ...)

Vastaa

; (puolipiste) tai + (plusmerkki) käyttäminen on pakollista, jotta lopetetaan -exec / execdir.

Erotus ; (puolipiste) tai + (plusmerkki) on se, kuinka argumentit välitetään etsimään ”s -exec / -execdir Esimerkki:

  • ; -toiminnon avulla suoritetaan useita komentoja (erikseen jokaiselle argumentille),

    Esimerkki:

    $ find /etc/rc* -exec echo Arg: {} ";" Arg: /etc/rc.common Arg: /etc/rc.common~previous Arg: /etc/rc.local Arg: /etc/rc.netboot 

    Kaikki seuraavat argumentit find katsotaan argumenteiksi komennolle.

    Merkkijono {} korvataan nykyisellä tiedoston nimellä Käsitellään.

  • käyttämällä + suorittaa vähiten mahdollisia komentoja (koska argumentit yhdistetään). Se on hyvin samanlainen kuin xargs -komento, joten se käyttää mahdollisimman monta argumenttia komentoa kohden välttääkseen riviarvojen enimmäismäärän ylittämisen.

    Esimerkki:

    $ find /etc/rc* -exec echo Arg: {} "+" Arg: /etc/rc.common /etc/rc.common~previous /etc/rc.local /etc/rc.netboot 

    Komentorivi rakennetaan liittämällä jokainen valittu tiedostonimi loppuun.

    Vain yksi {} -esiintymä on sallittu komennossa.

Katso myös:

Kommentit

vastaus

Koska komentohaku saa alle kolme tiedostoa:

fileA fileB fileC 

Jos käytät -exec plusmerkillä (+) merkki,

find . -type f -exec chmod 775 {} + 

se tulee olemaan:

chmod 775 fileA fileB fileC 

Komentorivi rakennetaan liittämällä kukin vastaava tiedostonimi loppuun, mikä on samalla tavalla kuin xargs rakentaa komentorivit. Komennon kutsujen kokonaismäärä (tässä tapauksessa chmod) on paljon pienempi kuin vastaavien tiedostojen määrä.

Jos käytät -exec puolipisteellä (;),

find . -type f -exec chmod 775 {} \; 

se tulee olemaan:

chmod 775 fileA chmod 775 fileB chmod 775 fileC 

vastaus

Kuten man find:

-exec -komento {} + Tämä -exec -toiminnon variantti suorittaa määritetyn komennon valituissa tiedostoissa, mutta komentorivi rakennetaan liittämällä jokainen valittu tiedostonimi loppuun; komennon kutsujen kokonaismäärä on paljon pienempi kuin vastaavien tiedostojen määrä. Komentorivi on rakennettu samalla tavalla kuin xargs rakentaa komentorivit. Komennossa sallitaan vain yksi ”{}” – esiintymä. Komento suoritetaan aloitushakemistossa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *