
Мне нужно преобразовать много файлов .ai в .svg, и я нашел инструмент ai2svg. Я попробовал
for i in `find ./ -type f -name \*.ai`; do python ai2svg.py "$i"; done
Но я получаю такие ошибки:
IOError: [Errno 2] Нет такого файла или каталога: «Профиль» Трассировка (последний вызов был последним): Файл «ai2svg.py», строка 171, в inf = open (sys.argv[1])
Если имя файла "Profile test.ai", есть ли способ обойти это, кроме как предварительно удалить все пробелы в именах из файлов .ai?
Спасибо.
решение1
Это сделает это:
find . -type f -name \*.ai -exec python ai2svg.py {} \;
Если ai2svg.py
вы работаете с несколькими файлами (как большинство инструментов *nix), вы можете сделать это, чтобы выполнить команду минимальное количество раз:
find . -type f -name \*.ai -exec python ai2svg.py {} +
Если вас интересуют только файлы в текущем каталоге, вы можете использовать для этого стандартный цикл:
for file in *.ai
do
python ai2svg.py "$file"
done
решение2
Правильный способ сделать это следующий:
find . -maxdepth 1 -type f -name '*.ai' -print0 | while read -d '' -r file; do python ai2svg.py "$file"; done
Обратите внимание , что -print0
опция find
which вместе с -d ''
in read
удаляет все пробельные символы в именах файлов, включая символы новой строки и табуляции.