2

我经常发现自己想将我拍摄的两张最新截图合并到一张图片中。我想在一个命令行中通过 xargs (?) 使用 ImageMagick 来合并按日期排序的两个最新文件。

到目前为止,我有以下内容,但是在处理文件名中的空格时遇到了麻烦。我似乎无法弄清楚如何完成这项工作。

ls -t | head -n 2 | sed 's/\n/\x0/' | xargs -0 -n 2 -I images convert images -append -quality 75 combined.jpg
4

3 回答 3

1

如果您安装了 GNU Parallel:

ls -t | head -n 2 | parallel -n 2 convert {} -append -quality 75 combined.jpg

它旨在正确处理空格、'、" 和其他奇怪的字符。

查看介绍视频http://pi.dk/1

于 2012-11-23T20:53:28.563 回答
1

将 sed 命令更改为sed 's/.*/"&"/'.

或者使用这个纯 bash 解决方案:用以下代码替换管道中的 sed 命令:

while read x; do echo "'$x'"; done

-0并从 xargs 中删除该选项。

于 2012-11-22T14:04:28.477 回答
0

编辑: 起初我没有看到您需要按最新文件的顺序对它们进行排序,我使用 find 提供了答案。

不幸的是 find 不允许对文件进行排序。需要一些解决方法来正确排序它们。

这是使用 find 按时间对文件进行排序的建议:

find -type f -printf '%T+_%p\n' | sort -r | head -n 2 |  sed 's/[^_]*_//' | tr '\n' '\0' | xargs -0 -n 2 -I images convert images -append -quality 75

注意:即使文件名中有“_”或空格,此命令也可以使用。

于 2012-11-23T02:40:04.630 回答