Next: Fixing Permissions, Previous: Cleaning Up, Up: Common Tasks
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 \;