CAT ファイル名リストを出力する

書法

CAT [pattern]* [option]*

SHELLMODE

@記述、!記述、^記述

詳細

パターンに基づいてディレクトリを検索し、該当するファイル名を出力する。
パターンを複数した場合には、それらのパターンを先頭から順に処理する。

パターンは、パスとワイルドカード指定を連結したものである。
ディレクトリを単独で指定すると、ワイルドカードは*.*を指定したものとみなされる。 特にディレクトリであることを明確にするには、最後に\を付加すれば良い。
ワイルドカード指定のみを指定すると、ディレクトリはカレントディレクトリとなる。
パターンを省略するとカレントディレクトリで、ワイルドカードは*.*となる。

残念なことに、システムのAPIがロングファイル名/ショートファイル名の双方を見て出力するので 厳密にパターンが守られてはいない。例えば*.htmを指定すると、*.htmlファイルも出力される(ショートネームが*.htmだから)。 大目に選ばれるので、気になる場合は、後ろでファイル名をチェックしなおすか、正規検索オプションを指定すると良い。

パターン指定がないときに、何もしないことを示す特殊な指定が出来る(-Q)。
これはディレクトリリストなどに基づいて検索する際に、リストが空ならば、 何も出力しないことを保証するために付けられた機能である。

属性によって出力を限定できる(-A=)。

ディレクトリを再帰的にサブディレクトリを含めて検索できる(-R)。

検索対象をファイルの変わりにディレクトリを指定できる(-P)。

ファイル名の正規検索ができる(-E,-C)
正規検索の対象は、filename.expの部分で、パターンによる検索で見つかったファイル名に対して、 さらに、正規検索を行う。

ファイル名を絶対パスで出力することが出来る(-A)。 また、ファイル名のほかに、ファイルサイズ(-S)、日付(-D)、時間(-T)、属性(-ATTR)MSDODでの短縮ファイル名(-M)を出力できる。 出力は以下の形式。

FILENAME 【TAB SIZE】【TAB TIMESTAMP】【TAB DATE】 【TAB TIME】 【TAB ATTR】【TAB MSDOS_NAME】 EOL
属性をあらわす文字列は、以下の属性文字の連なりである。

属性文字

Dディレクトリ
N通常のファイル
R読み取り専用
H隠しファイルまたは隠しディレクトリ
Sシステムファイル
Aアーカイブファイルまたはアーカイブディレクトリ
C圧縮ファイルまたは圧縮ディレクトリ
Tテンポラリファイル
Oファイルのデータが別のオフラインの記憶装置に移されている

出力行の形式を置換文字列で指定できる(-U)。
このとき、出力に関するオプション(-A,-ATTR,-D,-F,-LARGE,-M,-S,-SMALL,-T,-PH,-PT,-QD,-QS)は無効になる。

ドライブ全体にcatを使用することは、避けたい。
「ゴミ箱」や、NTFSで使用する「System Volume Information\」も処理対象になってしまうからである。

OPTION

-A
ファイル名出力を絶対パスにする
-ATTR
出力に属性を付加する。属性文字に対応する文字の連なりを出力する。
-A=限定文字列
出力を限定文字列で指定した属性に限定する。
限定文字列は
[ 属性文字[+|-] ]*
属性文字が単独か、後ろに+があると設定されている属性、 属性文字の後ろに-があると解除されている属性をあらわす。
ここで指定しなかった属性は判断の対象にはならない。
-C[I|A|K|P]*:str
モダンな正規検索-Eと異なり、細かくオプションを指定できる。
オプションは、:の前に文字の組み合わせで指定する。
I 全角半角の英字の大文字、小文字を区別しない。
A 半角英字の大文字、小文字を区別しない。
K 全角英字の大文字、小文字を区別しない。
P 検索対象をフルパス名とする。指定しなければパス名を除いた部分。

オプションのIAKは排他的である。 つまり、最後に指定したものが有効となる。
-D
日付をYYYY-MM-DD形式で出力する。
-DT
日付をYYYY/MM/DD形式で出力する。
-Estr
モダンな正規検索をする。
通常のパターンマッチの後行う 。パスを除いた部分が対象となる
-F
パスを出力しない(ファイル名だけ出力) 。
-G
タイムスタンプを出力する。タイムスタンプの形式はTSEXPRのFILETIMEと同じ形式。
-Ipattern
ワイルドカード指定を単独でする。通常のパターン記述に相当する部分にはディレクトリ名を書く。
ディレクトリ名を間接指定する場合に、ワイルドカード部分だけこのオプションで指定するために使用する。 この形で使用すると、常に-Qが指定されたことになる。
-LARGE
ファイル名の半角を大文字で出力
-M
MSDOSファイル名を出力する
-R
サブディレクトリも対象とする
-S
ファイルサイズを出力する
-SMALL
ファイル名の半角を小文字で出力
-T
時間をHH:MM形式で出力する
-TM
時間をHH:MM:SS形式で出力する
-Ofilename
指定のファイルに出力を切りかえる
-P
ファイルの代わりにディレクトリを検索する
-PF
ファイルとディレクトリを検索する
-PHprefix
出力時にファイル名の前に付加する文字列を指定する
-PTpostfix
出力時にファイル名の後ろに付加する文字列を指定する
-Q
パターン指定が無いときは、無視する
-QD
ファイル名を引用符(")で囲む
-QS
ファイル名を引用符(')で囲む
-Uargstr
文字列置換を用いて出力する。 このとき、引数は次のように対応する
%0;出力行番号
%1;(相対パス付)ファイル名
%2;ファイルサイズ
%3;日付(YYYY-MM-DD)
%4;時間(HH:MM)
%5;属性
%6;タイムスタンプ(tsexprのfiletime()と同じ形式)
%7;日付(YYYY/MM/DD)
%8;時間(HH:MM:SS)

用例

いくつかの用例を挙げます

catカレントフォルダーのすべてのファイル
cat *.txtカレントフォルダーの拡張子「.txt」ファイル
cat e:\app\*.txt「e:\app」の拡張子「.txt」ファイル
cat e:\app「e:\app」のすべてのファイル
cat -pカレントフォルダーのフォルダー
cat -rカレントフォルダー以下サブフォルダーを含むすべてのファイル
cat c:\app -i*.txt「c:\app」の拡張子「.txt」ファイル
cat -e^.*\.txt$カレントフォルダーの拡張子「.txt」ファイル。正規検索を使った。

参考

バージョン

Ver 1.022015/01/29-DT、-TM、-G オプション追加
Ver 1.01パスのエラーチェック強化
Ver 1.00初版