Devo essere in grado di ordinare alfabeticamente l'output di findprima di inviarlo a un comando. L'inserimento | sort |tra non ha funzionato, quindi cosa avrei potuto fare?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Devo essere in grado di ordinare alfabeticamente l'output di findprima di inviarlo a un comando. L'inserimento | sort |tra non ha funzionato, quindi cosa avrei potuto fare?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Risposte:
Alcune versioni di sorthanno -zun'opzione, che consente record con terminazione null.
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
Inoltre, puoi anche scrivere uno script di alto livello per farlo:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
Aggiungi l' -ropzione a xargsper assicurarti che myCommandvenga chiamato con un argomento.
-t \0opzione per l'ordinamento (che è un -zsinonimo)
|sortsoluzioni è che non puoi più utilizzarlo -exec. OK, anche se è possibile riscrivere la tua dichiarazione in -execmodo che funzioni xargs, la domanda è: che dire di "mini-script" ? ( sh -c ...) Non lo definirei banale per trasformare un mini-script "sh -c" con più comandi in modo che possa funzionare xargs(se possibile, cioè)
printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' x
Penso che tu abbia bisogno della -nbandiera per ordinare #
Secondo la specie umana:
-n, --numeric-sort
compare according to string numerical value
modificare
Print0 potrebbe avere qualcosa a che fare con questo, l'ho appena provato. Elimina print0, puoi annullare la stringa in ordine usando il -zflag
print0sembra separare lo spazio dei nomi dei file, che è quello che devo passare al mio comando, sfortunatamente
Se hai installato GNU Parallel http://www.gnu.org/software/parallel/ puoi farlo:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
Puoi installare GNU Parallel semplicemente:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
Guarda i video introduttivi di GNU Parallel per saperne di più: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
.diverso ... Consortesso finisce alla fine della lista ... conpythonuna specie verso l'alto. (forse una specie di pitone conLC_COLLATE=C)