
Ich muss viele .ai-Dateien in .svg konvertieren und habe das Tool ai2svg gefunden. Ich habe versucht
for i in `find ./ -type f -name \*.ai`; do python ai2svg.py "$i"; done
Aber ich bekomme Fehler wie
IOError: [Errno 2] Keine solche Datei oder kein solches Verzeichnis: 'Profil' Traceback (letzter Aufruf zuletzt): Datei "ai2svg.py", Zeile 171, in inf = offen (sys.argv[1])
Wenn der Dateiname „Profile test.ai“ lautet. Gibt es eine Möglichkeit, dies zu umgehen, außer vorher alle Leerzeichen in den Namen der .ai-Dateien zu entfernen?
Danke schön.
Antwort1
So funktioniert es:
find . -type f -name \*.ai -exec python ai2svg.py {} \;
Wenn ai2svg.py
es mit mehreren Dateien funktioniert (wie die meisten *nix-Tools), können Sie Folgendes tun, um den Befehl so oft wie möglich auszuführen:
find . -type f -name \*.ai -exec python ai2svg.py {} +
Wenn Sie sich nur für die Dateien im aktuellen Verzeichnis interessieren, können Sie hierfür die Standardschleife verwenden:
for file in *.ai
do
python ai2svg.py "$file"
done
Antwort2
So gehen Sie richtig vor:
find . -maxdepth 1 -type f -name '*.ai' -print0 | while read -d '' -r file; do python ai2svg.py "$file"; done
Beachten Sie -print0
die Option, find
die zusammen mit -d ''
in read
alle Leerzeichen in den Dateinamen berücksichtigt, einschließlich Zeilenumbrüchen und Tabulatoren.