【linux】lsコマンドでファイル名の数値順に並べる
問題
lsコマンドって、こういう順で出力しますよね(辞書順)。1,2,3,4…(数値順)って無理ですか。
1.jpg 10.jpg 18.jpg 2.jpg 20.jpg 3.jpg 5.jpg
答え
lsコマンドには、オプションで -v バージョン順 というのがある。
$ touch {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}.jpg (ファイルを作って) $ ls -v1 (-v バージョン順で -1 一行で) 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg 10.jpg 11.jpg 12.jpg 13.jpg 14.jpg 15.jpg 16.jpg 17.jpg 18.jpg 19.jpg 20.jpg
数値順になった。
もうちょっと複雑な例
$ touch {a,b,c}.{1,2,3,10,11,12,20,21,22,30}.jpg $ ls -v1 a.1.jpg a.2.jpg a.3.jpg a.10.jpg a.11.jpg a.12.jpg a.20.jpg a.21.jpg a.22.jpg a.30.jpg b.1.jpg b.2.jpg b.3.jpg b.10.jpg b.11.jpg b.12.jpg b.20.jpg b.21.jpg b.22.jpg b.30.jpg c.1.jpg c.2.jpg c.3.jpg c.10.jpg c.11.jpg c.12.jpg c.20.jpg c.21.jpg c.22.jpg c.30.jpg
さらにバージョンらしい形に、メジャーバージョン、マイナーバージョンのような数字をつけると?
$ touch {a,b,c}.{1,10,20}.{1,2,3,10,11,12,20,21,22,30}.jpg $ ls -v1 a.1.1.jpg a.1.2.jpg a.1.3.jpg a.1.10.jpg a.1.11.jpg a.1.12.jpg a.1.20.jpg a.1.21.jpg a.1.22.jpg a.1.30.jpg a.10.1.jpg a.10.2.jpg a.10.3.jpg a.10.10.jpg a.10.11.jpg a.10.12.jpg a.10.20.jpg a.10.21.jpg a.10.22.jpg a.10.30.jpg a.20.1.jpg a.20.2.jpg a.20.3.jpg a.20.10.jpg a.20.11.jpg a.20.12.jpg a.20.20.jpg a.20.21.jpg a.20.22.jpg a.20.30.jpg b.1.1.jpg b.1.2.jpg b.1.3.jpg b.1.10.jpg b.1.11.jpg b.1.12.jpg b.1.20.jpg b.1.21.jpg b.1.22.jpg b.1.30.jpg b.10.1.jpg b.10.2.jpg b.10.3.jpg b.10.10.jpg b.10.11.jpg b.10.12.jpg b.10.20.jpg b.10.21.jpg b.10.22.jpg b.10.30.jpg b.20.1.jpg b.20.2.jpg b.20.3.jpg b.20.10.jpg b.20.11.jpg b.20.12.jpg b.20.20.jpg b.20.21.jpg b.20.22.jpg b.20.30.jpg c.1.1.jpg c.1.2.jpg c.1.3.jpg c.1.10.jpg c.1.11.jpg c.1.12.jpg c.1.20.jpg c.1.21.jpg c.1.22.jpg c.1.30.jpg c.10.1.jpg c.10.2.jpg c.10.3.jpg c.10.10.jpg c.10.11.jpg c.10.12.jpg c.10.20.jpg c.10.21.jpg c.10.22.jpg c.10.30.jpg c.20.1.jpg c.20.2.jpg c.20.3.jpg c.20.10.jpg c.20.11.jpg c.20.12.jpg c.20.20.jpg c.20.21.jpg c.20.22.jpg c.20.30.jpg
よい具合に並べてくれた。
コメント