ファイル名ソート

当方めも

んと。この方法はwslで書いています。DOS窓やPoerShellでも出来ると思いますが、awkとかを後で使うのならばwslがもってこいという感じがしています。

例えばabc-1-def.tsなんてファイルがあってabc-2-def.tsと続くファイルがあったとします。その数ざっと800個。最後のファイル名付近になるとabc-800-def.tsなんて感じ

これを単にls -1で一覧を出すと

abc-1-def.ts
abc-10-def.ts
abc-100-def.ts
abc-2-def.ts
以下略
などとなって1から順に並んでほしい人にとっては少々残念な結果になります。そこで次の処理。

ls -1 | sort -t “-” -k 2 -n

としてlsの出力を加工してあげます。Linuxの得意とするところですね。ちなみにsortのオプションは-tで区切り文字を指定してあげて、-kでソートしたい場所を何番目かを指定してあげます。さらに-nでlsからもらった文字列を数値としてみなしてソートさせます。

たったこれだけで一覧が表示されます。後はawkなどを使ってさらに自分好みに文字列を追加したりするなど小技の連続でいかようにもできます。リダイレクトで出力するもよし何かに取り込んでもよしと幅が広がります。

コメント

タイトルとURLをコピーしました