Portál AbcLinuxu, 4. listopadu 2025 07:08
-exec při větším množství souborů není nejlepším řešením. Zbytečně se tím prodlužuje vykonávání příkazu.
            rm (v případě varianty find ... -exec), kdy se rm spouští pro každý soubor znovu. V případě varianty s xargs smaže rm více nalezených souborů najednou.
Ten první případ s -exec je tedy něco jako find... | xargs -n1 ...
            Záleží na tom, jestli se použije
find ... -exec ... \;
nebo
find ... -exec ... +
nebo dokonce
find ... -delete
Ale ne všechy implementace to podporují.
echo interní příkaz shellu.
            
$ echo `find`
---výpis---
$ /bin/echo `find`
bash: /bin/echo: Argument list too long
V tom případě ale pořád nechápu proč by interní příkaz shellu měl mít neomezeně dlouhé argumenty.
            execve(), takže pak problém nevznikne ani u externího příkazu.
            xargs řeší problém "argument list too long" tak, že ten příkaz v případě potřeby spustí víckrát...
            find vypisuje cesty oddělené \n a vy předáváte xargs přepínač -0, takže hledá oddělovač \0. Takhle je to správně:
find -print0 | xargs -0 /bin/cat
        Tiskni
            
                Sdílej:
                
                
                
                
                
                
            
    
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.