如果我有一个目录下的文件列表
ullman-000.pbm
ullman-001.pbm
...
ullman-098.pbm
ullman-099.pbm
ullman-1000.pbm
ullman-1001.pbm
ullman-1002.pbm
ullman-1003.pbm
ullman-1004.pbm
ullman-1005.pbm
ullman-1006.pbm
ullman-1007.pbm
ullman-1008.pbm
ullman-1009.pbm
ullman-100.pbm
ullman-1010.pbm
ullman-1011.pbm
ullman-1012.pbm
ullman-1013.pbm
ullman-1014.pbm
ullman-1015.pbm
ullman-1016.pbm
...
当使用ullman*.pbm
引用它们并将其convert ullman*.pbm ullman.pdf
作为输入文件传递给命令时,如何按以下顺序制作它们
ullman-000.pbm
ullman-001.pbm
...
ullman-098.pbm
ullman-099.pbm
ullman-100.pbm
...
ullman-999.pbm
ullman-1000.pbm
ullman-1001.pbm
ullman-1002.pbm
ullman-1003.pbm
ullman-1004.pbm
ullman-1005.pbm
ullman-1006.pbm
ullman-1007.pbm
ullman-1008.pbm
ullman-1009.pbm
ullman-1010.pbm
ullman-1011.pbm
ullman-1012.pbm
ullman-1013.pbm
ullman-1014.pbm
ullman-1015.pbm
ullman-1016.pbm
...
谢谢?
答案1
GNUsort
可能xargs
会成功
printf '%s\0' ullman*.pbm | sort -z -k2,2n -t'-' | xargs -0 convert
首先通过列出文件而不调用来检查这是否有效convert
printf '%s\0' ullman*.pbm | sort -z -k2,2n -t'-' | xargs -0 printf '%s\n'
ullman-000.pbm
ullman-001.pbm
ullman-098.pbm
ullman-099.pbm
ullman-100.pbm
ullman-1000.pbm
...
然而
printf '%s\0' ullman*.pbm | xargs -0 printf '%s\n'
ullman-000.pbm
ullman-001.pbm
ullman-098.pbm
ullman-099.pbm
ullman-1000.pbm
..
..
答案2
一种方法是将具有三位数的文件重命名为四位数,并用零填充。如果你已经安装perl-rename
(Ubuntu 上默认安装),你可以尝试:
rename -n 's/-(\d{3}\.)/-0$1/' *.pbm
一旦您对结果感到满意,请在不使用-n
.
或者查看其他选项将文件名中的数字填充为固定长度。