Szeretném tudni a {} + jelentését a exec parancsot, és mi a különbség a {} + és a {} \; között. Pontosabban mi a különbség e kettő között:

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

Megjegyzések

  • Le van írva a man find(1) -ban nagyon részletesen, bárki számára könnyen megtalálható. Ne ' ne legyél lusta.
  • Köszönöm kedves Miroslav, a man exec -ban keresgéltem!
  • Ah, még soha nem találkoztam a {} + felhasználással. Ehhez általában xargs-t használok (és gyakran find ... -print0 | xargs -0 ...)

Válasz

A ; (pontosvessző) vagy + (pluszjel) használata kötelező a -exec / execdir.

A ; (pontosvessző) vagy a + (pluszjel) az argumentumok átadása az “s -exec / -execdir paraméter. Például:

  • a ; használatával több parancsot hajt végre (minden argumentumhoz külön),

    Példa:

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

    A (z) find összes következő argumentuma a parancs argumentumának számít.

    A {} helyére az aktuális fájlnév lép folyamatban van.

  • a a lehető legkevesebb parancsot hajtja végre (mivel az argumentumok együtt vannak). Nagyon hasonlít a xargs parancs működéséhez, ezért parancsonként a lehető legtöbb argumentumot használja, hogy elkerülje a soronkénti maximális argumentumhatár túllépését. > Példa:

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

    A parancssor úgy épül fel, hogy minden egyes kiválasztott fájlnevet hozzáfűz a végén.

    A {} csak egy példánya engedélyezett a parancsban.

Lásd még:

Megjegyzések

Válasz

Tekintettel arra, hogy A parancskeresés három fájl alá kerül:

fileA fileB fileC 

Ha az -exec elemet pluszjel (+) jel,

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

ez lesz:

chmod 775 fileA fileB fileC 

A parancssor úgy épül fel, hogy minden illesztett fájlnevet hozzáfűz a végéhez, ugyanúgy, mint xargs a parancssorait. A parancs összes meghívásának száma (ebben az esetben chmod) sokkal kevesebb lesz, mint az egyeztetett fájlok száma.

Ha a -exec pontot pontosvesszővel használja (;),

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

ez lesz:

chmod 775 fileA chmod 775 fileB chmod 775 fileC 

válasz

A man find szerint:

-exec parancs {} + Ez az -exec művelet változata futtatja a megadott parancsot a kiválasztott fájlokon, de a parancssor úgy épül fel, hogy minden egyes kiválasztott fájlnevet hozzáfűz a végéhez; a parancs összes meghívásának száma jóval kevesebb lesz, mint az egyeztetett fájlok száma. A parancssor nagyjából ugyanúgy épül fel, mint az xargs. A parancsban csak egy „{}” példány engedélyezett. A parancs a kezdő könyvtárban kerül végrehajtásra.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük