Eu estou procurando uma maneira de obter find
e xargs
(GNUWin32, no Win7, ambos os programas na versão 4.1) para jogar junto, com nomes de arquivos que contêm espaços.
Obtendo os nomes de arquivos em xargs
que um era um desafio, mas eu parecem encontrar nenhuma maneira de fazê-los para fora em uma peça. Infelizmente, xargs
retira aspas, não importa o que eu tente.
Isso faz com lame
que (da qual deve ser chamado xargs
) se queixe de argumentos supérfluos, pois os nomes de arquivos contêm espaços.
Sim, eu conheço find
a -exec
opção (que funcionaria sem xargs
), explicitamente não estou interessado nisso, pois desejo executar 8 instâncias paralelas de lame
uma tarefa em lote intensivamente computacional (recodifique aproximadamente 1.800 audiobooks de 192kbit / s mp3s para caber no cartão micro-SD do meu aparelho). Isto é xargs -P 8
.
Este comando:
find . -name "*.mp3" -printf "\"%P\" --abr 52 -q 0 --silent \"conv/%P\" " | xargs -n 7
produzirá algo semelhante a:
path/01.01 foo bar.mp3 --abr 52 -q 0 --silent conv/path/path/01.01 foo bar.mp3
... que ainda não possui aspas, portanto, se eu colocar lame
no final desse comando, ele será considerado path/01.01
como entrada, foo
como saída, e reclamará de que há um bar.mp3
argumento supérfluo .
- Eu tentei adicionar apóstrofos (entre as aspas e dentro delas), mas o `xargs" também as remove.
-print0
também não fará (pelo menos por qualquer coisa que eu tentei).- Eu tentei simular
-print0
comprintf
e\0
, sem sucesso. - Enquanto isso, estou brincando com a idéia de redirecionar a saída para um arquivo e adicionar as aspas com um editor de texto ...