Eu preciso ser capaz de classificar alfabeticamente a saída findantes 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
Eu preciso ser capaz de classificar alfabeticamente a saída findantes 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
Respostas:
Algumas versões do sorttêm uma -zopçã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 -ropção para xargscertificar-se de que myCommandé chamado com um argumento.
-t \0opção de tipo (que é um -zsinônimo)
|sortsoluções é que você não pode mais usar -exec. OK, embora seja possível reescrever sua declaração dada para -execque ela funcione xargs, 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 com xargs(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 -nbandeira para classificar #
De acordo com o tipo de homem:
-n, --numeric-sort
compare according to string numerical value
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 -zsinalizador
print0parece ser espaço-separando os nomes de arquivos que é o que eu preciso passar para o meu comando, infelizmente
Se você possui o GNU Parallel http://www.gnu.org/software/parallel/ instalado, você pode fazer isso:
find folder1 folder2 -name "*.txt" -print |
sort |
parallel myCommand
Você pode instalar o GNU Parallel simplesmente:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
Assista aos vídeos de introdução do GNU Parallel para saber mais: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
.diferente ... Comsortisso termina no final da lista ... compythonclassificação até o topo. (talvez os tipos de python comLC_COLLATE=C)