如何从命令行连续打开多个图像文件进行编辑?

可以说我有三个图像文件要编辑。 考虑所有文件都在~/Pictures 。 让第一个文件的名称为1.svg ,第二个文件的名称为1.svg ,第三个文件的名称为3.svg 。我有Inkscape编辑器。 现在,我想要执行一个bash脚本,以便必须执行以下操作:

  1. 首先1.svg必须打开才能编辑。
  2. 编辑完成后,当我关闭该文件时,必须自动打开2.svg才能编辑。
  3. 现在当我完成编辑3.svg时,我想要3.svg打开进行编辑。
  4. 现在编辑3.svg ,脚本必须以关闭GIMP结束。

PS: – 如果你想知道这是否是家庭作业,那不是! 看到这里 。 你会注意到我必须在那里编辑图像。 为了更好地回答这个问题,我需要帮助。 所以请帮忙。 也是一个完整的初学者 。 我对bash一无所知。 所以尽可能详细地解释你的答案 。 您也可以考虑使用GIMP编辑器来编辑.jpg文件。 它可能对其他人有用。 顺便说一句,我使用的是14.04 LTS。 提前致谢。

更新: – 上面链接的答案是根据下面接受的答案编辑的。

正如Rmano所说,你可以简单地在终端中for循环:

 for i in 1.jpg 2.jpg 3.jpg; do gimp $i; done 

在文件所在的目录中运行它,或者每个文件应该包含其余的路径。 您可以在其中放置任意数量的文件。

GIMP将打开文件,编辑它,然后关闭GIMP。 GIMP关闭后, for循环继续并打开列表中的下一个文件。

如果您不想每次都关闭GIMP,可以尝试添加read -p

 for i in 1.jpg 2.jpg 3.jpg; do gimp $i && read -p "Press [Enter] key to continue..."; done 

编辑完文件后,您应该可以在终端中按Enter键,下一个文件应该在GIMP中打开,而不必关闭GIMP。

这是我能想到的最简单的方法,尝试检测GIMP何时关闭文件可能会变得复杂。

请注意您的情况

Rmano指出,大多数文件都是SVG文件。 因此列出所有SVG文件并用inkscape替换gimp 。 使用gimp可以很好地处理PNG文件。

以下命令将打开默认关联应用程序中的文件 :

 edit 1.svg 2.svg 3.svg 

如果.svg字母顺序打开所有.svg文件,可以使用*通配符:

 edit *.svg 

*代表任何字符序列,因此您可以以其他方式使用它; 例如,要连续打开名称包含wibble.svg文件:

 edit *wibble*.svg 

如果要基于更细粒度的模式选择文件,则存在其他通配符。

你可以尝试这样的事情:

 shopt -s nullglob for i in * do if [ -d "$i" ] then continue else inkscape "$i" fi done 

我在我的Pictures目录上测试它似乎工作。

我还没有完全理解第一行,但它有助于确保我的*工作。 然后for循环一次循环遍历当前目录中的所有内容。 如果它不是目录,则在Inkscape中打开它进行编辑。

当您完成编辑并关闭inkscape后,下一个图像将打开,直到没有更多图像。


对于您的具体情况(阅读链接问题后),这可能会更好。 记得cd/usr/share/unity/icons然后运行:

 for i in file1.svg file2.svg file3.svg do if [ -d "$i" ] then continue else inkscape "$i" fi done 

file1.svg file2.svg file3.svg替换为要编辑的文件列表。