この機能はバージョン3.2.0より前のバージョンでは利用できません。

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