[Unix/ワンライナー] 使われていない画像ファイルの一覧を取得したい。

用途

やりたいこと

  • あるディレクトリに画像ファイルがおいてある(hoge.png, foo.png, ... etc)
  • あるディレクトリにマークダウンファイルがあって、その中で上の画像ファイルを参照している
  • 画像ファイルの中でマークダウンに使われていない物を調べたい
% ls img/ | xargs -n 1 -I@ bash -c "echo -n @; ggrep -rl @ ./ | wc -l" | awk '$2==0{print $1}'

説明

imgディレクトリの下に複数の画像ファイルがあるとします。
カレントディレクトリの下に複数のマークダウンファイルがあるとします。
lsでリストアップした画像ファイルを1つづつgrepして使われているマークダウンファイルの数を調べます。

% ls img/ | xargs -n 1 -I@ bash -c "ggrep -rl @ ./ | wc -l"

これだけだと、数だけ出力されて、どの画像ファイルが使われているのかわからないので、echoコマンドで先頭に画像ファイル名を付与しています。

% ls img/ | xargs -n 1 -I@ bash -c "echo -n @; ggrep -rl @ ./ | wc -l"

最後に、awkで2行目が0(使われていないもの)を出力して完成です。

0 件のコメント :

コメントを投稿