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
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:
-
man find
- pontosvessző (;) és plusz (+) használata exec-lel a keresésben a SO-ban
- Egyszerű unix parancs, mire szolgálnak a {} és a \; a SO-nél
Megjegyzések
- van egy különbség és egy fő. Lásd: user1116056 ' s válasz
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.
man find(1)
-ban nagyon részletesen, bárki számára könnyen megtalálható. Ne ' ne legyél lusta.man exec
-ban keresgéltem!{} +
felhasználással. Ehhez általában xargs-t használok (és gyakranfind ... -print0 | xargs -0 ...
)