次: , 前: Cleaning Up, 上: Common Tasks


4.4 奇妙なファイル名

findは,名前に奇妙な文字を含むファイルを,削除したり名前を変更し たりする手助けにもなります.スペース,タブ,制御文字,またはハイビット セットを用いた文字のような,もの(文字)を含む名前のファイルに邪魔される ときもあります.そのようなファイルを削除する最も簡単な方法は,以下のよ うになります.

     rm -i some*pattern*that*matches*the*problem*file

rmは,与えられたパターンにマッチするそれぞれのファイルを削除する かどうか尋ねます.古いシェルを使用している場合で,ファイル名にハイビッ トセットを用いた文字を含む場合には,この方法は動作しません.シェルはそ れを削除します.より信頼できる方法は,以下のようになります.

     find . -maxdepth 1 tests -okdir rm '{}' \;

ここでのtestsは,ファイルをユニークに識別します.`-maxdepth 1'オプションは,findがあらゆるサブディレクトリのファイルを検索す ることで,時間を無駄にすることを妨げます.サブディレクトリが無い場合は 省略してもかまいません.問題のファイルをユニークに識別する良い方法は, そのinode番号を知ることです.以下のように使用します.

     ls -i

制御文字を名前に含んでいるファイルがあって,そのinode番号が12345だと分 かったと仮定します.以下のコマンドは,それを削除するかどうか,プロンプ トを表示します.

     find . -maxdepth 1 -inum 12345 -okdir rm -f '{}' \;

ファイル名が奇妙な文字列を含んでいて,出力時にスクリーンが駄目になるた め,尋ねられたくない場合は,`-okdir'の代わりに`-execdir'を使 用して下さい.

そうではなく,ファイルの名前を変更したい場合,rmの代わりに mvを使用することが可能です.

     find . -maxdepth 1 -inum 12345 -okdir mv '{}' new-file-name \;