bash 循环中的错误文件名
Bad file names in bash loop
意图
我正在尝试遍历一个目录并将所有 9000 个左右的 pdf 文件转换为 png
for i in *.pdf; do
pdftoppm -f 1 -l 2 -png $i ${i%.pdf*}
done
问题
循环仅适用于大约 500 个案例。当我对一些未转换的 pdf 文件手动调用 pdftopm 时,它起作用了。
例如,一个在循环中不起作用的文件是w7hnp - FOO BAR 8-18-12 NOT FINAL DOC.pdf
。当我使用制表符完成手动调用 pdftoppm
时,文件名包含转义字符:w7hnp\ -\ FOO\ BAR\ 8-18-12\ NOT\ FINAL\ DOC.pdf
并且命令工作正常。
有没有办法确保正确转义空格?
我需要保留文件名以与数据库中的其他信息相匹配,因此除非我可以创建包含旧名称和新名称的字典,否则重命名将不起作用。
您应该像这样引用变量:"$i"
和 "${i%.pdf*}"
意图
我正在尝试遍历一个目录并将所有 9000 个左右的 pdf 文件转换为 png
for i in *.pdf; do
pdftoppm -f 1 -l 2 -png $i ${i%.pdf*}
done
问题
循环仅适用于大约 500 个案例。当我对一些未转换的 pdf 文件手动调用 pdftopm 时,它起作用了。
例如,一个在循环中不起作用的文件是w7hnp - FOO BAR 8-18-12 NOT FINAL DOC.pdf
。当我使用制表符完成手动调用 pdftoppm
时,文件名包含转义字符:w7hnp\ -\ FOO\ BAR\ 8-18-12\ NOT\ FINAL\ DOC.pdf
并且命令工作正常。
有没有办法确保正确转义空格?
我需要保留文件名以与数据库中的其他信息相匹配,因此除非我可以创建包含旧名称和新名称的字典,否则重命名将不起作用。
您应该像这样引用变量:"$i"
和 "${i%.pdf*}"