获取文件夹中文件的基本名称
Get basename of files in folder
我想压缩图片文件,写了下面的bash脚本:
for i in *.png; do convert $i -quality 100% $i-comp.jpeg; done;
当我 运行 它时,我得到像 48.png-comp.jpeg
这样的文件名。我只想拥有 48-comp.jpeg
,所以基本上删除了文件名的 .png
部分。
我尝试使用这个 ${$i/.png/}
,它给我一条错误消息。
有什么建议吗?
您可以使用参数扩展去除输出文件名的 png 扩展名:
for i in *.png; do convert $i -quality 100% ${i%.png}-comp.jpeg; done
${$i/.png/}
几乎是正确的,但是 Parameter Expansion.
中不需要第二个 $
#!/bin/bash
for i in *.png; do
convert "$i" -quality 88% "${i/.png/}-comp.jpeg"
done
注意: ${i%.png}
比 ${i/.png/}
更常用于删除文件扩展名,但两者应该产生相同的输出。
我想压缩图片文件,写了下面的bash脚本:
for i in *.png; do convert $i -quality 100% $i-comp.jpeg; done;
当我 运行 它时,我得到像 48.png-comp.jpeg
这样的文件名。我只想拥有 48-comp.jpeg
,所以基本上删除了文件名的 .png
部分。
我尝试使用这个 ${$i/.png/}
,它给我一条错误消息。
有什么建议吗?
您可以使用参数扩展去除输出文件名的 png 扩展名:
for i in *.png; do convert $i -quality 100% ${i%.png}-comp.jpeg; done
${$i/.png/}
几乎是正确的,但是 Parameter Expansion.
$
#!/bin/bash
for i in *.png; do
convert "$i" -quality 88% "${i/.png/}-comp.jpeg"
done
注意: ${i%.png}
比 ${i/.png/}
更常用于删除文件扩展名,但两者应该产生相同的输出。