GNU/Linux >> Linux Esercitazione >  >> Linux

Trova -exec + Vs Trova | Xargs:quale scegliere?

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!
Linux
  1. Come includo una pipa | nel mio comando linux find -exec?

  2. trova -exec cmd {} + vs | xargs

  3. trovare -exec una funzione di shell in Linux?

  4. Size() vs ls -la vs du -h qual è la dimensione corretta?

  5. Trova quale processo sta modificando un file

CentOS vs Ubuntu:quale scegliere per il tuo server web

Ubuntu vs. Fedora:quale scegliere?

Come trovare quale servizio è in ascolto su una porta particolare

Come dire a Xargs quale argomento scegliere ??

Linux Mint Cinnamon vs MATE:quale scegliere?

Perché si dovrebbe usare sudo?