usage: onedrive-cli put [-h] [-n] file [folder]
Isso indica que o subcomando put
do programa onedrive-cli
deve ter um ou dois argumentos não opcionais. Um arquivo é obrigatório (o nome do arquivo local para upload) e uma pasta é opcional (uma pasta remota para fazer o upload).
O comando onedrive-cli put *
passa os nomes de todos os arquivos no diretório atual como argumentos. Ele funciona, não importa quais caracteres estranhos os nomes de arquivo possam conter. O problema é que o programa onedrive-cli
não aceita vários arquivos como argumentos, ao contrário de muitos comandos de manipulação de arquivos.
O loop é o jeito certo de fazer isso:
for file in * ; do
onedrive-cli put "$file"
done
O loop pode ser lento se o comando tiver que se autenticar no servidor novamente para cada arquivo. Não parece haver uma maneira de fazer melhor com a ferramenta onedrive-cli-tool, conforme previsto. Você poderia escrever algumas linhas de Python (aviso: completamente não testado! Em particular, eu não sei como os erros serão sinalizados.)
#!/usr/bin/env python
import sys
from onedrive import api_v5
api = api_v5.PersistentOneDriveAPI.from_conf({})
for f in sys.argv[1:]:
api.put(f)
¹ Exceção: por razões históricas, *
omite arquivos cujo nome começa com .
(arquivos de pontos).