如何从命令行连续打开多个图像文件进行编辑?
可以说我有三个图像文件要编辑。 考虑所有文件都在~/Pictures
。 让第一个文件的名称为1.svg
,第二个文件的名称为1.svg
,第三个文件的名称为3.svg
。我有Inkscape编辑器。 现在,我想要执行一个bash脚本,以便必须执行以下操作:
- 首先
1.svg
必须打开才能编辑。 - 编辑完成后,当我关闭该文件时,必须自动打开
2.svg
才能编辑。 - 现在当我完成编辑
3.svg
时,我想要3.svg
打开进行编辑。 - 现在编辑
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
替换为要编辑的文件列表。