Nautilus 脚本对多个选定文件执行一项操作?

Nautilus 脚本对多个选定文件执行一项操作?

我有一个 Nautilus 脚本,我想修改它,以便它使用多个选定的文件作为输入来执行单个操作。有人可以解释一下如何实现这一目标吗?

我尝试过command $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS,脚本的作用是执行 command file1,然后command file2作为两个离散的操作。这不适用于我的用例,而是我需要执行脚本command file1 file2

align_image_stack如果重要的话,我将它与需要 2 个或更多图像文件作为输入的命令一起使用。我从终端启动 Nautilus 以查看错误消息,然后我得到“align_image_stack:至少需要指定两个文件”。我测试了如下所示的一些命令,但所有命令都产生相同的错误消息。我认为问题是变量$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS产生换行符,但我不知道如何捕获选定的文件路径。

align_image_stack "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
align_image_stack $(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
align_image_stack printf("$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
echo -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | xargs -I align_image_stack "{}"

答案1

我从来没能开始$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS工作,但这是有效的:

command $(echo -n "$@")

我相信这称为命令替换,“$@”字符将所有选定的文件作为输入一起插入命令中,并在 echo 列出它们后使用 -n 参数抑制换行符。

如果您需要将一组括号内的照片对齐并融合在一起,可以使用以下 Nautilus 脚本,该脚本现已经过测试且运行良好。它将成品输出到您的桌面(文件名是当前时间)并在执行以下操作后清除所有临时文件:

#!/bin/bash
align_image_stack -a BATCH -C $(echo -n "$@") && enfuse -o ~/Desktop/$(date '+%Y-%m-%d-%T').tif BATCH*.tif && rm BATCH*.tif

相关内容