日記+趣味+アフィリエイト(+仕事)
 

スポンサーサイト

--/--/--(--) --:--:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


▼コマンド
for i in `find . -type f \( -iname '*.png' -o -iname '*.jpg' \)`; do echo -e $i'\t'`grep -rs \`basename $i\` ./ | grep -v ".svn" | wc -l`;done | sort > file_list_search.txt

▼経緯
webサイトのサーバーにアップされている画像ファイルのリストを取得して
そのファイル名を元にHTMLファイルやプログラムで使用されている状況(使用回数)をGREPで取得するような
Linuxのコマンドが欲しくて探してみたけどなかなかコレというのが無かったので自分で作ってみました。
findの -execや grep とxargsの組み合わせなども色々試してみたのですが結局うまくいかず、
findの結果をfor で回す方法に落ち着きました。

▼少し詳しい説明
".png"または".jpg"(大文字・小文字の区別はしない)が含まれるファイル(ディレクトリ等は除く)のリストを取得してループを回す。
basenameを使ってフォルダパスを除いたファイル名のみを取得しカレントディレクトリ配下でGREP検索を行う。
.svnディレクトリ(サブバージョン管理用の隠しファイル)は除外する。
上記のGREPでヒットした件数をカウントしその結果を画像ファイル名の後に出力する。
(エクセルなどに貼り付けて編集しやすくするために、画像ファイル名の後ろに\t(タブ)を入れています。)
ソートで並び替えた結果をfile_list_search.txt に書き出す。

▼出力結果
こんな感じです。
./aa/12/001.jpg 4
./aa/123/002.png 9
./aaa/123/img_mypage.png 0
./aaa/123/img/aaa.png 1
./aaa/1234/img/btn_entry.png 0
./bbb/567/img/logo_001.png 1
./ccc/img/img/main_img_02.png 15

※プログラムの書き方によっては画像ファイルのパスまで含めると引っかからないので
 ファイル名のみで検索しています。
そのため、同名のファイルだと重複してカウントされます。
ファイル数が多いと結構時間がかかります。

結果が0件のファイルは使用されていないものなので、
不要なファイルを探して削除するのに便利かもしれません。


コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://atcentral.blog75.fc2.com/tb.php/277-2b96014e
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。