2020年8月以降のバージョンをお使いの場合
次のバージョンをお使いの場合はこのセクションの説明をご覧ください。
- 3.7.0 以上の 3.x
- 4.2.0 以上の 4.x
除外するファイルやディレクトリの指定方法
コマンドラインオプション--exclude
により、軽量化の対象から除外するファイルやディレクトリパスのパターンを指定できます。
パスは対象ディレクトリからの相対パスで指定します。先頭の/
は不要です。
例えばdir/exclude
ディレクトリ以下すべてのファイルを除外する場合は、次のように指定します。
$ lightfile --serial <付与されたシリアルコード> --dir <対象ディレクトリ> --exclude dir/exclude
パターンにはminimatchを利用できます。
任意の階層に存在する.git
ディレクトリを除外する場合は、次のように指定します。
$ lightfile --serial <付与されたシリアルコード> --dir <対象ディレクトリ> --exclude **/.git
複数のパターンを指定する場合
コマンドラインオプション--exclude
は、一度のコマンド実行で複数指定することができます。
$ lightfile --serial <付与されたシリアルコード> --dir <対象ディレクトリ> \
--exclude dir/exclude --exclude dir/and-here --exclude dir/and-more
複数の条件を指定した場合は、そのどれかの条件に合致する場合に除外されます(論理演算子ORで適用されます)。
絞り込みパターンとの関係
コマンドラインオプション--only
を利用すると、指定したパターンのディレクトリやファイルのみを軽量化の対象に絞り込むことができます。
絞り込みパターンの指定については、LightFileコマンド » 特定のパスに絞り込むにはを参照ください。
コマンドラインオプション--exclude
と--only
を併用すると、まずはじめに--exclude
が指定するパスを除外し、それ以外で--only
に合致するパスのみを軽量化します。
コマンドラインオプション--exclude
で除外されたファイルが--only
で指定したパターンに合致しても、軽量化は行われません。
2020年7月以前のバージョンをお使いの場合
次のバージョンをお使いの場合はこのセクションの説明をご覧ください。
- 3.2.x / 3.3.x / 3.4.x / 3.5.x / 3.6.x
- 4.0.x / 4.1.x
例えばdir/exclude
ディレクトリ以下すべてのファイルを除外する場合は、次のように指定します。
前方一致ではありませんのでご注意ください。例えば上記の場合、--exclude dir/exclude
だけではその下の階層が除外対象になりません。--exclude dir/exclude/**/*
と指定する必要があります。
$ lightfile --serial <付与されたシリアルコード> --dir <対象ディレクトリ> --exclude dir/exclude/**/*
除外結果を確認する場合
コマンドラインオプション--dryrun
を指定すると、実際の画像ファイルの軽量化は行われず、対象のファイルとそれ以外のファイルを確認することができます。
$ lightfile --serial <付与されたシリアルコード> --dir <対象ディレクトリ> --exclude dir/exclude --dryrun
除外対象のファイルには次のように除外条件 dir/exclude//* に該当するため処理されません。**というメッセージが表示されます。
[2018-11-26T11:01:01.430] [INFO] default - <4ff80092; dir2/not-jpeg.jpg> dryrunモードのため実際の処理は行いません。
[2018-11-26T11:01:01.431] [INFO] default - <4ff80092; dir2/not-readable.jpg> dryrunモードのため実際の処理は行いません。
[2018-11-26T11:01:01.432] [INFO] default - <4ff80092; dir2/not-writable.jpg> dryrunモードのため実際の処理は行いません。
[2018-11-26T11:01:01.434] [WARN] default - <4ff80092; dir/exclude/with-jpeg-thumbnail.jpg> 除外条件 dir/exclude/**/* に該当するため処理されません。
[2018-11-26T11:01:01.436] [WARN] default - <4ff80092; dir/exclude/with-rgb-thumbnail-bad-exif.jpg> 除外条件 dir/exclude/**/* に該当するため処理されません。
[2018-11-26T11:01:01.437] [WARN] default - <4ff80092; dir/exclude/with-rgb-thumbnail.jpg> 除外条件 dir/exclude/**/* に該当するため処理されません。
複数のパターンを指定する場合
コマンドラインオプション--exclude
は、一度のコマンド実行で複数指定することができます。
$ lightfile --serial <付与されたシリアルコード> --dir <対象ディレクトリ> \
--exclude dir/exclude//* --exclude dir/and-here//* --exclude dir/and-more/**/*
複数の条件を指定した場合は、そのどれかの条件に合致する場合に除外されます(論理演算子ORで適用されます)。
互換性について
2020年7月以前のバージョンでは、--exlucde
はディレクトリではなくファイルの除外パターンとなります。
指定したパターンがディレクトリパスに該当しても、LightFileコマンドはディレクトリツリーのスキャンを停止せず、深い階層まで走査した上で発見された末端のファイルパスと除外パターンを比較します。そのため、--exlude dir/exclude/**/*
という指定が必要になります。
一方、2020年8月以降のバージョンでは--exclude
はファイルおよびディレクトリの除外パターンとなります。
指定したパターンが途中のディレクトリパスに該当すると、LightFileコマンドはディレクトリツリーのスキャンをそこで停止し、深い階層は走査しません。
スキャンが高速になる反面、複雑な除外条件の指定ができなくなりました。また、--dryrun
オプションによる除外ファイルの確認ができなくなりました。
互換モードで起動するには
2020年8月以降のバージョンのLightFileコマンドの--exclude
オプションを、それより前のバージョンと同じように解釈させる互換モードの指定オプションがあります。それが--exclude-file
オプションです。
次のコマンドは2020年8月以降のバージョンであっても、--exclude
オプションの指定に対してそれより前のバージョンと同様に動作します。
$ lightfile --serial <付与されたシリアルコード> --dir <対象ディレクトリ> --exclude dir/exclude/**/* --exclude-file