
Tengo que convertir muchos archivos .ai a .svg y encontré la herramienta ai2svg. He intentado
for i in `find ./ -type f -name \*.ai`; do python ai2svg.py "$i"; done
Pero recibo errores como
IOError: [Errno 2] No existe tal archivo o directorio: 'Perfil' Rastreo (última llamada más reciente): Archivo "ai2svg.py", línea 171, en inf = open (sys.argv[1])
Cuando el nombre del archivo es "Profile test.ai". ¿Hay alguna forma de evitarlo, excepto eliminar de antemano todos los espacios en blanco en los nombres de los archivos .ai?
Gracias.
Respuesta1
Esto lo hará:
find . -type f -name \*.ai -exec python ai2svg.py {} \;
Si ai2svg.py
funciona con varios archivos (como la mayoría de las herramientas *nix), puede hacer esto para ejecutar el comando la cantidad mínima de veces:
find . -type f -name \*.ai -exec python ai2svg.py {} +
Si solo le interesan los archivos en el directorio actual, puede usar el bucle estándar para esto:
for file in *.ai
do
python ai2svg.py "$file"
done
Respuesta2
La forma correcta de hacerlo es la siguiente:
find . -maxdepth 1 -type f -name '*.ai' -print0 | while read -d '' -r file; do python ai2svg.py "$file"; done
Observe que -print0
la opción find
junto con -d ''
in read
se encarga de los espacios en blanco en los nombres de archivos, incluidas las nuevas líneas y las tabulaciones.