将带有空格的多个文件传递给python脚本

将带有空格的多个文件传递给python脚本

我需要将很多 .ai 文件转换为 .svg,我找到了 ai2svg 工具。我试过

for i in `find ./ -type f -name \*.ai`; do python ai2svg.py "$i"; done

但是我得到了类似的错误

IOError:[Errno 2] 没有这样的文件或目录:“Profile”回溯(最近一次调用最后一次):文件“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-d ''in一起read处理文件名中的任何空格字符,包括换行符和制表符。

相关内容