2014年5月2日金曜日

マルチバイト(日本語文字)ファイル名の検索コマンド

特定のディレクトリにマルチバイト(日本語文字)ファイル名が存在していないかどうか調査する方法です。
Webサーバのドキュメントルート以下にこのようなファイルが存在することは望ましくないので探し出したり
する時に使えそうなコマンド(小技)です。ついでに削除する手順も記載します。

OS: CentOS 6.5 (64-bit)


■状況確認

[root@ty-web02 ~]# find /var/www/html/ -type f | wc -l
6009
[root@ty-web02 ~]# find /var/www/html/ -type f | head
/var/www/html/phpinfo.php
/var/www/html/401.html
/var/www/html/404.html
/var/www/html/index.html
/var/www/html/common/head_foot/header.html
/var/www/html/common/head_foot/head_foot.css
/var/www/html/common/head_foot/footer.html
/var/www/html/common/_てすと.css
/var/www/html/common/import.css
/var/www/html/common/top.css
[root@ty-web02 ~]#
いや~な予感・・・。


■マルチバイトファイル名の存在チェック

環境変数を一時的に変更して、下記コマンドを実行。
[root@ty-web02 ~]# LANG=C
[root@ty-web02 ~]# find /var/www/html/ | grep -v '^[[:cntrl:][:print:]]*$'
/var/www/html/common/_てすと.css
/var/www/html/common/一時保存
/var/www/html/common/一時保存/get_adobereader.html
/var/www/html/common/一時保存/copyright.html
/var/www/html/img/menu/いつか消す.gif
/var/www/html/img/top/いずれ消す.png
/var/www/html/img/h2/バックアップ
/var/www/html/img/h2/バックアップ/products02.png
/var/www/html/img/h2/バックアップ/products01.png
[root@ty-web02 ~]#
マルチバイトファイル名(ディレクトリ名も)残さない約束だったじゃない・・・。


■ドキュメントルートから該当ファイル(ディレクトリ)を削除

ディレクトリから先に削除します。
もう一度マルチバイトファイル名が残っていないかを確認後、環境変数を戻します。
[root@ty-web02 ~]# find /var/www/html/ -type d | grep -v '^[[:cntrl:][:print:]]*$' | xargs rm -rf
[root@ty-web02 ~]# find /var/www/html/ -type f | grep -v '^[[:cntrl:][:print:]]*$' | xargs rm -rf
[root@ty-web02 ~]# find /var/www/html/ | grep -v '^[[:cntrl:][:print:]]*$'
[root@ty-web02 ~]#
[root@ty-web02 ~]# LANG=ja_JP.UTF-8


以上です。こちらの情報が何かのお役に立てましたら幸いです。

0 件のコメント:

コメントを投稿