批量删除前两个文件扩展名
Batch remove former of two file extensions
我在 MacOSX 10.12 上处理很多图片。
为了进行一些图像分析,我需要将格式从 .JPG 更改为 .gif。
使用 ImageMagick,我完成得相对较快,现在我有多个带有双扩展名 *.JPG.gif 的文件。
我想从文件名中删除“.JPG”部分,但由于某些原因我正在做的事情不起作用。 (我应该说这一步可能对我接下来要做的事情并不重要,但因为我有很多文件,所以尽可能简化它们的名称可能是最好的。我还应该说我拥有所有超级用户权限none 的文件名实际上包含刹车或空格,所以即使在我的代码中添加“”也不会改变任何东西。
这是我正在尝试使用 bash 脚本:
#!/bin/bash
for file in /folder/*.JPG.gif
do
mv $file ${file#.JPG}
done
我的理解是这段代码应该从 $file 中删除 .JPG 部分,从文件名的前面开始匹配。然而,当我调用 ls 命令来查看程序是否执行了它应该执行的操作时,所有名称仍然存在,并带有双扩展名。
非常感谢任何帮助。
像这样修改您的 mv
命令:
#!/bin/bash
for file in /folder/*.JPG.gif
do
mv "$file" "${file/\.JPG}"
done
您的初始代码使用了从开头而不是中间删除文本的扩展。上面的扩展删除了字符串内部。
请注意,这不是很可靠。如果您的路径中有“.JPG”或文件名中除文件名末尾以外的任何地方,它都不会执行您想要的操作。引用,即使在您的情况下暂时没有必要,随着情况的变化和代码的复制和粘贴,引用仍然是一种很好的做法。
我在 MacOSX 10.12 上处理很多图片。 为了进行一些图像分析,我需要将格式从 .JPG 更改为 .gif。
使用 ImageMagick,我完成得相对较快,现在我有多个带有双扩展名 *.JPG.gif 的文件。
我想从文件名中删除“.JPG”部分,但由于某些原因我正在做的事情不起作用。 (我应该说这一步可能对我接下来要做的事情并不重要,但因为我有很多文件,所以尽可能简化它们的名称可能是最好的。我还应该说我拥有所有超级用户权限none 的文件名实际上包含刹车或空格,所以即使在我的代码中添加“”也不会改变任何东西。
这是我正在尝试使用 bash 脚本:
#!/bin/bash
for file in /folder/*.JPG.gif
do
mv $file ${file#.JPG}
done
我的理解是这段代码应该从 $file 中删除 .JPG 部分,从文件名的前面开始匹配。然而,当我调用 ls 命令来查看程序是否执行了它应该执行的操作时,所有名称仍然存在,并带有双扩展名。
非常感谢任何帮助。
像这样修改您的 mv
命令:
#!/bin/bash
for file in /folder/*.JPG.gif
do
mv "$file" "${file/\.JPG}"
done
您的初始代码使用了从开头而不是中间删除文本的扩展。上面的扩展删除了字符串内部。
请注意,这不是很可靠。如果您的路径中有“.JPG”或文件名中除文件名末尾以外的任何地方,它都不会执行您想要的操作。引用,即使在您的情况下暂时没有必要,随着情况的变化和代码的复制和粘贴,引用仍然是一种很好的做法。