ファイルがリストされる順序

ファイルがリストされる順序

ディレクトリにファイルのリストがある場合

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

GNUは成功するsortかもしれません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

1つの方法は、3桁の数字のファイル名を4桁の数字に変更し、ファイル名を0で埋めることです。すでにインストールされている場合perl-rename(Ubuntuの場合はデフォルト)、次のことを試すことができます。

rename -n 's/-(\d{3}\.)/-0$1/' *.pbm

結果に満足したら、使用を中止してください-n

または他のオプションもチェックしてくださいファイル名の数字を固定長でパッド

関連情報