我在使用此命令时遇到问题(怀疑它与 bash 相关,而不是特定于程序)
montage -verbose -label '%f' -font Helvetica -pointsize 10 -background '#ffffff' -fill 'gray' -auto-orient -tile 8x6 -geometry 200x200+2+2 ./*.bluemap.jpg /media/
问题是它以文件 100002.bluemap.jpg 开头,而不是最低的数字 2016.bluemap.jpg
并非所有数字都存在,例如 2016 年之后的下一个数字是 6438, 6685,9879
有没有办法让它以正确的顺序正确地完成工作?
或者我需要创建一些列表或其他东西吗?
我有点迷失了..
最佳答案
使用 GNU sort
对文件名进行排序,并将列表读入数组,然后在 montage
调用中展开它。
readarray -d '' -t files < <(printf '%s\0' ./*.bluemap.jpg | sort -z -t/ -k2n)
montage -verbose -label '%f' -font Helvetica -pointsize 10 -background '#ffffff' -fill 'gray' -auto-orient -tile 8x6 -geometry 200x200+2+2 "${files[@]}" /media/
参见:
关于bash - 以正确的字母数字顺序获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62131044/