在一个命令中通过 xarg 管道传输两个文件名(带空格)



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

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

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

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

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

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

和 从 xarg 中删除-0选项。

如果你安装了 GNU Parallel:

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

它旨在正确处理空间,","和其他奇怪的字符。

请参阅介绍视频 http://pi.dk/1

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

不幸的是,查找不允许对文件进行排序。需要一些解决方法才能正确排序它们。

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

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

注意:即使您的文件名中有"_"或空格,此命令也将起作用。

相关内容

  • 没有找到相关文章

最新更新