Comprendo che il -exec
può prendere un +
opzione per imitare il comportamento di xargs
. C'è qualche situazione in cui preferiresti un modulo rispetto all'altro?
Personalmente tendo a preferire la prima forma, se non altro per evitare di usare la pipa. Immagino sicuramente gli sviluppatori di find
deve aver fatto le ottimizzazioni appropriate. Ho ragione?
Risposta accettata:
Potresti voler concatenare le chiamate per trovare (una volta, quando hai appreso che è possibile, il che potrebbe essere oggi). Questo è, ovviamente, possibile solo finché rimani in find. Una volta eseguito il pipe su xargs, è fuori portata.
Piccolo esempio, due file a.lst e b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
Nessun trucco qui:semplicemente il fatto che entrambi contengono "fuddel" ma solo uno contiene "fiddel".
Supponiamo che non lo sapessimo. Cerchiamo un file che soddisfa 2 condizioni:
find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097 4 -rw-r--r-- 1 stefan stefan 20 Jun 27 17:05 ./a.lst
Bene, forse conosci la sintassi di grep o di un altro programma per passare entrambe le stringhe come condizione, ma non è questo il punto. Ogni programma che può restituire true o false, dato un file come argomento, può essere utilizzato qui:grep era solo un esempio popolare.
E tieni presente che puoi seguire find -exec con altri comandi di ricerca, come -ls o -elimina o qualcosa di simile. Nota che delete non solo fa rm (rimuove i file), ma anche rmdir (rimuove le directory).
Tale catena viene letta come una combinazione AND di comandi, purché non diversamente specificato (vale a dire con un -or
switch (e parentesi (che necessitano di mascheramento))).
Quindi non lascerai la catena di ricerca, che è una cosa utile. Non vedo alcun vantaggio nell'usare -xargs, dal momento che devi stare attento nel passare i file, cosa che non deve fare find:gestisce automaticamente il passaggio di ogni file come un singolo argomento per te.
Se ritieni di aver bisogno di una maschera per i reperti {} parentesi graffe, sentiti libero di visitare la mia domanda che richiede prove. La mia affermazione è:non lo fai.
Correlati:aderenza -Trova significato- Cerca nel dizionario!