1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

サクラエディタでファイル名を数字順でGrepする方法

Posted at

ファイル名の数字順Grepの方法

 サクラエディタのGrepは、そこそこ便利で使っている人も多いと思います。
 しかし「完璧」になんでもこなせるわけではありません。

 そのひとつに「ファイル名がエクスプローラーと同じ順番にならない」という問題があります。

 Windows XP SP1 以降では、ファイル名は「数字順ソート」のような並び順になります。
 0,1,2 ... 8,9,10,11 ... 98,99,100,101
 という風に桁数の小さい数字から順番に並ぶようになりました。

 しかしサクラエディタのGrepでは、伝統的な文字列の辞書順で並びます。
 これだと0から101の数字のファイル名を与えると
 0,1,10,100,101,11,12 ... 19,2,20,21... 28,29,3,30,31 ... 98,99
 というふうに並びます。

 場合によってはGrep結果を見るのが大変になってしまいます。

 「*.txt」とかでGrepするとそうなりますが、場合によっては少し工夫すると、数字順「風」に並べることができます。

ファイル名の指定を工夫する

 サクラエディタの「ファイル」の部分は複数のワイルドカードが使えます。
 ここでは半角スペースで区切っていますが、,;で区切ることもできます。
 この複数個のワイルドカードは、左側から順に一覧を取得してその中で文字列ソートされます。
 そこで ?.txt ??.txt ???.txt の順番に指定すると、1桁のファイル、2桁のファイル、3桁のファイル、の順番に検索することができます。
 これで1.txt 9.txt 10.txt 11.txt のようなファイル名に対応できます。

 もしファイル名がabc.txt abc2.txt abc3.txt abc9.txt abc10.txt abc11.txtであれば、
 abc.txt abc?.txt abc??.txtのように指定すればOKです。

日付順

 数字の部分が「2か所」以上ある場合は、桁数での制御だけでは、うまく検索することはできません。
 ? ?? だけで順番をちゃんと制御することは無理っぽいです。
 ちょっと対応が面倒くさいですが、無理やりできないこともないです。
 そこでGrepを1年を2回に分けます。

 ※サクラエディタのGrepの「ファイル」の部分には恐らく260文字まで入力できます。

 一回目:2019-1-?.txt 2019-1-??.txt 2019-2-?.txt 2019-2-??.txt 2019-3-?.txt 2019-3-??.txt 2019-4-?.txt 2019-4-??.txt 2019-5-?.txt 2019-5-??.txt 2019-6-?.txt 2019-6-??.txt
 二回目:2019-7-?.txt 2019-7-??.txt 2019-8-?.txt 2019-8-??.txt 2019-9-?.txt 2019-9-??.txt 2019-10-?.txt 2019-10-??.txt 2019-11-?.txt 2019-11-??.txt 2019-12-?.txt 2019-12-??.txt
 このように[1-12]を直接指定することで、なんとかそれっぽい順番でGrepすることができます。

 複数年(2017-2020)で簡易的ですが月順さえ並んでいればいいなら
 2017-?-*.txt 2017-??-*.txt 2018-?-*.txt 2018-??-*.txt 2019-?-*.txt 2019-??-*.txt 2020-?-*.txt 2020-??-*.txt
 こんな感じにGrepすることもできます。

発想の転換、結果を並び替える

 Grepする順番を細かく制御することは難しいですが、Grep結果を「ソート」することはできます。
 Grepの結果出力形式を「ノーマル」にします。
 正規表現置換などを使用して「ファイル名」を「0パディング」に加工します。

C:\folder\calendar\2019-10-1.txt  [UTF-8]
C:\folder\calendar\2019-10-10.txt  [UTF-8]
C:\folder\calendar\2019-10-31.txt  [UTF-8]
C:\folder\calendar\2019-10-9.txt  [UTF-8]
C:\folder\calendar\2019-11-1.txt  [UTF-8]
C:\folder\calendar\2019-12-1.txt  [UTF-8]
C:\folder\calendar\2019-12-31.txt  [UTF-8]
C:\folder\calendar\2019-9-31.txt  [UTF-8]

・月の0パディング置換「calendar\\20(.{2})-([0-9])-([0-9]*)\.txt」→「calendar\\20$1-0$2-$3.txt
・日の0パディング置換「calendar\\20(.{2})-([0-9]{2})-([0-9])\.txt」→「calendar\\20$1-$2-0$3.txt
・Grep結果の範囲選択
・サクラエディタの機能「選択行の昇順ソート(Alt+A)」

C:\folder\calendar\2019-09-31.txt  [UTF-8]
C:\folder\calendar\2019-10-01.txt  [UTF-8]
C:\folder\calendar\2019-10-09.txt  [UTF-8]
C:\folder\calendar\2019-10-10.txt  [UTF-8]
C:\folder\calendar\2019-10-31.txt  [UTF-8]
C:\folder\calendar\2019-11-01.txt  [UTF-8]
C:\folder\calendar\2019-12-01.txt  [UTF-8]
C:\folder\calendar\2019-12-31.txt  [UTF-8]

・タグジャンプを復活させたいなら-0([1-9])-$1などに置換して、ファイル名を戻す。

 ということをすれば、ファイル名順になります。

 また「数字順ソート」マクロを作るか探してきて使えば、一発で並び替えできる場合もあります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?