Necesito poder ordenar alfabéticamente la salida de find
antes 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 find
como de costumbre y delimite sus líneas con NUL. GNU sort
puede manejar esto con el modificador -z:
find . -print0 | sort -z | xargs -r0 yourcommand
Algunas versiones de sort
tienen una -z
opció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 -r
opción para xargs
asegurarse de que myCommand
se llame con un argumento.
.
diferente ... Consort
esto termina al final de la lista ... con el ordenpython
en la parte superior. (tal vez Python se clasifica conLC_COLLATE=C
)-t \0
opción de ordenar (que es-z
sinónimo)|sort
soluciones es que ya no puede usarlas-exec
. OK, aunque es posible reescribir su declaración dada para-exec
que 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' x
Creo que necesitas la
-n
bandera 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
-z
banderafuente
print0
parece 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