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

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

假设我有三个图像文件需要编辑。假设所有文件都在 中~/Pictures。假设第一个文件的名称为1.svg,第二个文件的名称为2.svg,第三个文件的名称为3.svg。我有 Inkscape 编辑器。现在,我想要执行一个 bash 脚本,以便必须发生以下情况:

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

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

更新:- 上面链接的答案根据下面接受的答案进行了编辑。

答案1

正如 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 文件并替换gimpinkscape。PNG 文件用 就可以了gimp

答案2

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

edit 1.svg 2.svg 3.svg

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

edit *.svg

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

edit *wibble*.svg

如果您想根据更细粒度的模式选择文件,则可以使用其他通配符。

答案3

您可以尝试这样的事情:

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

    fi
done

我在我的图片目录上测试了它并且它似乎有效。

我还不完全理解第一行,但它可以帮助确保我的*工作。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用您想要编辑的文件列表 替换。

相关内容