Devo essere in grado di ordinare alfabeticamente l'output di find
prima 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 find
prima 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 sort
hanno -z
un'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' -r
opzione a xargs
per assicurarti che myCommand
venga chiamato con un argomento.
-t \0
opzione per l'ordinamento (che è un -z
sinonimo)
|sort
soluzioni è che non puoi più utilizzarlo -exec
. OK, anche se è possibile riscrivere la tua dichiarazione in -exec
modo 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 -n
bandiera 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 -z
flag
print0
sembra 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 ... Consort
esso finisce alla fine della lista ... conpython
una specie verso l'alto. (forse una specie di pitone conLC_COLLATE=C
)