Eu preciso ser capaz de classificar alfabeticamente a saída find
antes de canalizá-la para um comando. Entrar | sort |
entre não funcionou, então o que eu poderia fazer?
find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Use find
como de costume e delimite suas linhas com NUL. O GNU sort
pode lidar com isso com a opção -z:
find . -print0 | sort -z | xargs -r0 yourcommand
Algumas versões do sort
têm uma -z
opção, que permite registros terminados em nulo.
find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand
Além disso, você também pode escrever um script de alto nível para fazer isso:
find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand
Adicione a -r
opção para xargs
certificar-se de que myCommand
é chamado com um argumento.
.
diferente ... Comsort
isso termina no final da lista ... compython
classificação até o topo. (talvez os tipos de python comLC_COLLATE=C
)-t \0
opção de tipo (que é um-z
sinônimo)|sort
soluções é que você não pode mais usar-exec
. OK, embora seja possível reescrever sua declaração dada para-exec
que ela funcionexargs
, a pergunta é: e quanto aos "mini-scripts" ? (sh -c ...
) Eu não chamaria isso trivial para transformar um mini-script 'sh -c' com vários comandos para que ele possa trabalhar comxargs
(se possível em tudo, que é)printf %s\\n a b c d e | xargs -n3 sh -c 'printf %s, "$@"; printf \\n' x
Eu acho que você precisa da
-n
bandeira para classificar #De acordo com o tipo de homem:
editar
O print0 pode ter algo a ver com isso, acabei de testar isso. Retire o print0, você pode cancelar a sequência em ordem usando o
-z
sinalizadorfonte
print0
parece ser espaço-separando os nomes de arquivos que é o que eu preciso passar para o meu comando, infelizmenteSe você possui o GNU Parallel http://www.gnu.org/software/parallel/ instalado, você pode fazer isso:
Você pode instalar o GNU Parallel simplesmente:
Assista aos vídeos de introdução do GNU Parallel para saber mais: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
fonte