如何在其中带有空格的文件上执行命令?

时间:2019-05-09 21:07:21

标签: bash filesystems jpeg webp

我正在处理旧版代码库,我们尝试使用cwebp命令将所有jpeg / png文件转换为webp格式。不幸的是,许多图像文件的名称中都带有空格。 示例:i am poorly named.jpg

因此,当运行以下bash脚本以查找目录中的所有jpeg并循环并对其进行转换时,用空格分隔的单词将被视为另一个文件,因此图像永远不会转换。 我们不想删除空格,而只创建一个名称完全相同的webp文件。

files=$(find ./ -type f -name  "*.jpg")
for jpg in $files
do
  webp="${jpg/%jpg/webp}";
  if [ ! -f $webp ]; then
    echo "The webp version does not exist";
    cwebp -q 80 "$jpg" -o "$webp";
  fi
done

我已尝试将以上代码中的jpg=$(printf '%q' "$jpg")紧跟do之后放置。

如果文件i am poorly named.webp存在,我希望创建i am poorly named.jpg

1 个答案:

答案 0 :(得分:0)

但是没有真正的理由来存储所有文件名。因此,另一种选择是:

find ./ -type f -name  "*.jpg" | while read jpg
do 
....

但这仅在文件名不包含换行符时有效。对于带有换行符的文件,还有其他解决方案。如有需要,请询问。