Penso che questi siano i modi più comuni per passare il risultato di un comando al successivo, come input.
Come funzionano questi tre? O quali sono alcuni siti Web / URL?
Penso che questi siano i modi più comuni per passare il risultato di un comando al successivo, come input.
Come funzionano questi tre? O quali sono alcuni siti Web / URL?
Risposte:
Prime cose da scrivere:
man find
man xargs
Il find
comando stampa i risultati sull'output standard per impostazione predefinita, quindi l' -print
opzione normalmente non è necessaria, ma -print0
separa i nomi dei file con un byte 0 (NULL) in modo che i nomi contenenti spazi o nuove righe possano essere interpretati correttamente.
L' -exec
opzione è qualcosa che puoi usare al posto di xargs: il comando find esegue un comando per ogni elemento che trova.
Il xargs
comando legge stringhe separate da spazio o newline (in genere dal comando find , ma potrebbero provenire da qualsiasi punto) ed esegue alcuni comandi per ogni stringa.
Se xargs viene eseguito con un'opzione -0 , si aspetterà stringhe NULL separate come output dafind ... -print0
Il vantaggio di xargs è che può raggruppare le stringhe, in modo che esegua un comando solo una o due volte invece di n volte.
Quindi nell'uso normale:
find start_directory -name '*.txt' | xargs ls -l
find elenca i nomi dei file e xargs emette comandi come:
ls -l file1.txt file2.txt file3.txt ... fileN.txt
che è più veloce rispetto al rilascio del comando find:
ls -l file1.txt
ls -l file2.txt
ls -l file3.txt
ls -l ...
ls -l fileN.txt
Si noti che xargs non è più necessario con le attuali implementazioni find che probabilmente tutti supportano questa sintassi POSIX:
find directory -name '*.txt' -exec ls -l {} +
che è più semplice e leggermente più veloce della variante xargs.
find directory -name '*.txt' | xargs ls -l
Vedi i seguenti articoli:
Linux e Unix trovano tutorial sui comandi con esempi
xargs: come controllare e usare gli argomenti della riga di comando