【发布时间】:2021-07-11 07:52:05
【问题描述】:
我无法在这里发现错误,为什么它不是 globbing 而是使用 ls *.{jpg,JPEG,JPG,jpeg,PNG,png} 运行完美?
如何解决?
for file in *.{jpg,JPEG,JPG,jpeg,PNG,png}
do
echo $file
#convert "${file}" -scale 50% gallery_"${file}".jpg
done
【问题讨论】:
-
使用直接 glob 时出了什么问题?我看到的唯一问题是它会为任何不匹配的扩展名留下未扩展的 glob(例如,如果没有“.JPEG”文件,您将得到
*.JPEG作为结果之一)。另一方面,ls版本不起作用:它只运行一次循环,$file中的所有文件名都带有换行符。 -
您可以使用
[ -s "$file" ] && convert "$file" ...处理,只需测试文件是否存在并且大小不为零。 永远不要使用for i in $(ls anything),见Bash Pitfalls #1(这是第一个陷阱的原因......) -
是的,
ls绝对是个坏主意。我正在摆脱那个......