Necesito poder ordenar alfabéticamente la salida de findantes de canalizarla a un comando. Entrar | sort |entre no funcionó, entonces, ¿qué podría hacer?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Use findcomo de costumbre y delimite sus líneas con NUL. GNU sortpuede manejar esto con el modificador -z:
find . -print0 | sort -z | xargs -r0 yourcommand
Algunas versiones de sorttienen una -zopción, que permite registros terminados en nulo.
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
Además, también podría escribir un script de alto nivel para hacerlo:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
Agregue la -ropción para xargsasegurarse de que myCommandse llame con un argumento.
.diferente ... Consortesto termina al final de la lista ... con el ordenpythonen la parte superior. (tal vez Python se clasifica conLC_COLLATE=C)-t \0opción de ordenar (que es-zsinónimo)|sortsoluciones es que ya no puede usarlas-exec. OK, aunque es posible reescribir su declaración dada para-execque funcionexargs, la pregunta es, ¿qué pasa con los "mini-scripts" ? (sh -c ...) No llamaría a eso trivial para transformar un mini script 'sh -c' con múltiples comandos para que pueda funcionarxargs(si es posible, es decir)printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' xCreo que necesitas la
-nbandera para ordenar #Según el tipo de hombre:
editar
El print0 puede tener algo que ver con esto, acabo de probar esto. Saque la print0, puede terminar nulo la cadena en orden usando la
-zbanderafuente
print0parece estar separando el espacio de los nombres de archivo, que es lo que necesito pasar a mi comando, desafortunadamenteSi tiene instalado GNU Parallel http://www.gnu.org/software/parallel/ , puede hacer esto:
Puede instalar GNU Parallel simplemente por:
Mire los videos de introducción de GNU Parallel para obtener más información: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
fuente