output_#.root でファイルを作成するスクリプトがあります。# は数字です。ディレクトリで ls を実行すると、奇妙な方法でファイルを並べ替えることが選択されます。
output_1.root
output_10.root
output_100.root
output_11.root
output_2.root
等
1、2、3 などの論理的な順序でファイルを並べ替えるにはどうすればよいですか。
ファイルはアルファベット順にソートされます。それは正常な動作です。それらを番号順に並べ替えたい場合は、これを試すことができます:
ls *.root | sort -k2 -t_ -n
これにより、区切り記号として使用して結果が分割され、2 番目のフィールドに基づいて_
数値順に並べ替えられます。-n
-k2
GNU coreutils の ls を使用している場合は、version-sort スイッチを使用できます。
ls -v
サンプル ファイルを作成します。
touch output_1.root output_10.root output_100.root output_11.root output_2.root
それらをリストします:
ls -1v
出力:
output_1.root
output_2.root
output_10.root
output_11.root
output_100.root