gpt4 book ai didi

shell - 使用 shell 脚本操作文件名 : changing file extensions

转载 作者:行者123 更新时间:2023-12-02 08:44:39 24 4
gpt4 key购买 nike

我需要编写一个 shell 脚本来将图像格式从 .png 转换为 .tif。脚本如下:

#!/bin/sh

for f in `ls *.png`
do
convert $f $f.tif
done

但是这样做会将 .tif 格式附加到现有文件名中。即,如果图像是 abc.png,则 $f 将具有 abc.png,并且在转换后文件名变为 abc.png.tif。这不是我想要的。我需要它是 abc.tif。我如何操作 $f 来删除 .png?

最佳答案

这应该适合你:

#!/bin/bash

for file in *.png
do
filename=$(basename "$file")
filename=${filename%.*}
convert $file $filename.tif
done

这是如何工作的逐行演练:

  • for file in *.png - 您不需要命令替换 ls *.png 来获取带有 png 的文件列表扩大。通配符 * 将在 shell 中自动扩展以匹配 cwd 中的文件列表;在本例中,文件列表以 .png 结尾。
  • filename=$(basename "$file") - 这仅用于防御性编程;它获取文件的实际名称
  • filename=${filename%.*} - 这会从 filename
  • 中删除扩展名
  • convert $file $filename.tif - 运行您实际的转换命令

关于shell - 使用 shell 脚本操作文件名 : changing file extensions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13351806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com