プログラム作ったり、写真を管理したりすると特定のディレクトリ以下について大量のファイル操作する事は結構あるわけです。
例えば・・・
- 拡張子がbakのファイルを全て削除する
- ファイル名にtestを含むファイルの数を数える
- 拡張子jpgを全てpngに変更する(そんな事ないと思うけど[E:coldsweats01])
- ディレクトリの一覧を表示する
- .svnディレクトリ以外のファイルについて文字コードをUTF-8に変更する
等など。
実は、これ全部 find とその他のコマンドの組み合わせで実現できます。findは特定ディレクトリ以下の条件に当てはまるファイルやディレクトリを検索するコマンドです。めっちゃ便利やから良く使うねんけど。
基本的な使い方
find ディレクトリ
指定ディレクトリ以下の全てのファイルとディレクトリを表示する
find ディレクトリ -type タイプ
指定ディレクトリ以下の全てのタイプで指定したファイルorディレクトリを表示する
find ディレクトリ -name 名前
指定ディレクトリ以下の全ての名前のファイルorディレクトリを表示する
find ディレクトリ -exec コマンド {} ;
指定ディレクトリ以下の全てのファイルを引数にしてコマンドを実行する
凝った使い方
find . -name .svn -type d -prune -or -type f -print
カレントディレクトリ以下の.svnディレクトリ以外のディレクトリに含まれる全ファイルを表示する
find . -name .svn -type d -exec rm -Rf {} ;
カレントディレクトリ以下の全ての.svnディレクトリを削除する
SubversionでチェックアウトしたディレクトリからSubversionの管理情報を削除する時に便利
findと組み合わせると便利なコマンド
grep
ファイル内の文字列探索(-rコマンドでもできるけど、findの方が高度な検索が可能)
wc
ファイルの情報を表示(行数とか単語数とか)
file
ファイルの情報(キャラクタコードとか)を表示
mv/cp/rm
ファイルのコピーやら移動やら削除やら
nkf
ファイルの文字コードを変更
perl/sed
ファイルの内容置き換え
かなり応用可能なコマンドですなぁ。