Descobri uma boa resposta para esse problema específico:
Use a opção fswatch --format="% p% 0". Isso garante que o caractere nulo esteja no final do nome do caminho que foi transferido para xargs, que é o que está procurando com a opção -0 ativada.
e agradeço antecipadamente por qualquer conselho.
Estou trabalhando em um script que classificará automaticamente meus downloads. O script é muito simples e executá-lo manualmente tem o efeito pretendido. O problema que estou tendo é com o comando fswatch que tem a intenção de acionar o script - não consigo obter a saída do eco corretamente canalizada para xargs. Aqui está o comando:
fswatch --event Created Downloads/ | (while read x; do echo $x | xargs -0 bash ./dlsort.sh; done)
e o script:
if (echo "" | grep -q '\.jpg$'); then
mv "" Desktop/images/ &
else
mv "" Downloads/other/ &
fi
Eu determinei qual é o problema, só não sei como corrigi-lo. um caractere de nova linha é colocado no final do nome do arquivo, o que faz com que o comando mv falhe com um erro "no such file or directory" no script. Eu tenho experimentado com algumas variações nos comandos echo e fswatch, mas nada que eu tentei funcionou.
Obrigado novamente a qualquer um que possa ajudar com isso
Descobri uma boa resposta para esse problema específico:
Use a opção fswatch --format="% p% 0". Isso garante que o caractere nulo esteja no final do nome do caminho que foi transferido para xargs, que é o que está procurando com a opção -0 ativada.