如何批量删除一系列 .jpg 文件的前 n 个字节以修复损坏的标头

如何批量删除一系列 .jpg 文件的前 n 个字节以修复损坏的标头

情况:我有一个文件夹,里面装满了 .jpg 文件,这些文件的标题已损坏:.jpg 文件需要以 FF D8 FF E0 开头才能解释为图像,但我的文件的前四个字节中有随机值,后跟 FF D8 FF E0。我一直使用基于浏览器的十六进制编辑器手动删除前四个字节:https://hexed.it/。它运行良好,但我一次只能修复一个文件,这很繁琐。

问题:有没有办法使用命令行批量编辑这些文件?我应该使用什么命令?我需要具体说明,因为我缺乏 CLI 经验。

以下是我的情况的一个示例:我在一个名为 KIimages 的文件夹中有 50 个 jpg 文件。这些文件都名为“KIimage001”、“KIimage002”等等。我知道如何在终端中打开文件夹并列出其内容。然后我陷入了困境。接下来我该怎么做才能自动打开每张图片、删除前四个字节并重新保存每个文件?

我尝试过的方法:我阅读了几篇关于编写脚本或使用命令执行类似任务的文章/帖子,但是没有任何说明足够清晰或具体以提供任何帮助,或者发布的建议超出了我的基本技能水平。

我尝试使用 file 命令和 head 命令,我也读到过使用 dd 命令,但这些解决方案都太复杂了,而且对我的情况不够具体。有没有办法用简单的终端命令来完成我上面描述的工作?谢谢。请知悉,我正在使用 Pop!_OS,以防万一。

答案1

for file in /foo/*
    do
      if [ -f $file ]
      then
        tail -c +5 $file > $file.truncated && mv $file.truncated $file
      fi
    done

为了回应评论,这里是视频链接,详细解释了解决方案以及如何使用它:https://youtu.be/Ta5ahcieegg

以下是简短的分步说明:

  1. 在您最喜欢的文本编辑器(nano、vim 等)中创建一个文件。
  2. touch fix.sh例如,您可以在终端中使用命令。
  3. 将上面的代码复制粘贴到此文件中。
  4. 确保在第一行更新文件路径!
  5. 保存文件。
  6. chmod +x fix.sh通过在终端中输入使其可执行。
  7. 通过以下命令在终端中执行脚本:./fix.sh

有关详细的演示,请参见上面链接中的视频。

相关内容