Potresti voler concatenare le chiamate per trovare (una volta, quando hai appreso, che è possibile, che potrebbe essere oggi). Questo è, ovviamente, possibile solo finché rimani in cerca. Una volta che si esegue 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 corrisponde a 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 vero o falso, dato un file come argomento, può essere usato qui - grep era solo un esempio popolare.
E nota, puoi seguire find -exec con altri comandi find, come -ls o -delete o qualcosa di simile. Nota che eliminare non solo rm (rimuove i file), ma rmdir (rimuove anche le directory).
Tale catena viene letta come una combinazione AND di comandi, purché non diversamente specificato (ovvero con un -or
interruttore (e parentesi (che necessitano di mascheramento))).
Quindi non stai lasciando la catena di ricerca, il che è utile. Non vedo alcun vantaggio nell'uso di -xargs, dal momento che devi fare attenzione nel passare i file, il che è qualcosa che non è necessario trovare: gestisce automaticamente il passaggio di ciascun file come argomento singolo per te.
Se ritieni di aver bisogno di mascherare le parentesi graffe {} , sentiti libero di visitare la mia domanda che richiede prove. La mia affermazione è: non lo fai.
find
. Molte grazie!