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
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
Respuestas:
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.
-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 funcione xargs
, 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 funcionar xargs
(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:
-n, --numeric-sort
compare according to string numerical value
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
bandera
print0
parece estar separando el espacio de los nombres de archivo, que es lo que necesito pasar a mi comando, desafortunadamente
Si tiene instalado GNU Parallel http://www.gnu.org/software/parallel/ , puede hacer esto:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
Puede instalar GNU Parallel simplemente por:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
Mire los videos de introducción de GNU Parallel para obtener más información: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
.
diferente ... Consort
esto termina al final de la lista ... con el ordenpython
en la parte superior. (tal vez Python se clasifica conLC_COLLATE=C
)