我试图使我的网站速度更快,发现转换JPG和PNG到WebP可能是一个差异,所以我想复制我的主题目录中的所有图像,包括在不同的文件夹中的子目录,但保持原来的目录流。
在谷歌上搜索后,我在这个网站上找到了一个脚本,它工作,我在一个新的开始文件夹中使用mkdir目录流。但我的问题是我必须手动编辑脚本并在每个文件夹中运行它。因为我不是最好的工作与bash我不知道如何编辑转换脚本寻找在所有文件夹和复制他们在新的。
所以我的问题是,是否有一种方法可以保持文件夹结构与原始文件夹相同,但使用不同的基础文件夹?
for file in *.jpg
do
cwebp -q 100 "$file" -o "/var/www/themes/assets/images/webp/${file%.jpg}.webp"
done
2条答案
按热度按时间laik7k3q1#
试试这个(Shellcheck-clean)代码:
请注意,我用于测试的
cwebp
版本(愚蠢地)不支持--
终止命令行选项的约定。否则,该命令将是(并且应该是)cwebp -q 100 -o "$webp_path" -- "$jpg_path"
。如果任何JPEG文件的路径以-
开头,则上述代码中的命令可能出错。解决这个问题并使代码完全安全的一种方法是使用./**/*.jpg
而不是**/*.jpg
作为查找JPEG文件的glob模式。jei2mxaa2#
cwebp和parallel
我们可以使用以下命令并行转换文件:
find . | parallel cwebp -quiet {} -o {.}.webp
。但它假设您在目录中,并且所有文件都是可转换的。第一行将
./src/img/
的目录结构复制到./docs/www/
。第二个将
jpg
/tif
/png
并行转换为webp
。3
,因为d=/
在./src/img/
中3次)*