
Tenho que converter muitos arquivos .ai para .svg e encontrei a ferramenta ai2svg. eu tentei
for i in `find ./ -type f -name \*.ai`; do python ai2svg.py "$i"; done
Mas recebo erros como
IOError: [Errno 2] Arquivo ou diretório inexistente: 'Perfil' Traceback (última chamada mais recente): Arquivo "ai2svg.py", linha 171, em inf = open (sys.argv[1])
Quando o nome do arquivo for "Profile test.ai". Existe alguma maneira de contornar isso, exceto remover antecipadamente todos os espaços em branco nos nomes dos arquivos .ai?
Obrigado.
Responder1
Isso fará isso:
find . -type f -name \*.ai -exec python ai2svg.py {} \;
Se ai2svg.py
funcionar com vários arquivos (como a maioria das ferramentas *nix), você pode fazer isso para executar o comando o mínimo de vezes:
find . -type f -name \*.ai -exec python ai2svg.py {} +
Se você se preocupa apenas com os arquivos no diretório atual, você pode usar o loop padrão para isso:
for file in *.ai
do
python ai2svg.py "$file"
done
Responder2
A maneira certa de fazer isso é a seguinte:
find . -maxdepth 1 -type f -name '*.ai' -print0 | while read -d '' -r file; do python ai2svg.py "$file"; done
Observe -print0
a opção find
que, junto com -d ''
in, read
cuida de quaisquer caracteres de espaço em branco nos nomes de arquivos, incluindo novas linhas e tabulações.