このページの本文へ

知っているとオペレーションが100倍便利になる各種のコマンドを覚えよう

覚えておきたい必須コマンド30―その2・便利なコマンド

2001年06月09日 13時58分更新

文● 中野 賢

  • この記事をはてなブックマークに追加
  • 本文印刷

ファイルが多くなってくると、どこに何のファイルを置いたか忘れてしまうことがある。また、エディタが作ったバックアップファイルだけを削除したいというようなこともある。findコマンドは、ディレクトリツリーの中から指定された条件に合うファイルを見つけてくれる。さらに、そのファイルに対して操作をすることもできる。

拡張子が.bakの名前を持つファイルを探したいときは、次のようにする。最初の引数のドットは検索をするディレクトリ位置である。この場合は、カレントディレクトリ以下を探すよう指定している。-nameはファイル名で探すという指示であり、名前の条件は「*.bak」に一致するファイルとしている。ファイル名を引用符で囲んでいるのは、アスタリスクをシェルに解釈されないようにするためだ。

USER$ find . -name '*.bak'
./2000-05/linux.txt.bak
./2000-05/lists.txt.bak

execオプションを用いると、探し出した各ファイルに対して、削除やパーミッションを変更したりといった操作をすることができる。たとえば、バックアップファイルを削除するには、次のように指定する。execオプションはセミコロン(;)までの間をコマンドとして実行する。セミコロンにバックスラッシュを付けているのも、シェルに解釈されないためである。

USER$ find . -name '*.bak' -exec rm -f {} \;

{}の部分が見つかったファイルの名前に置換される。上記の例は、次のように実行されることに等しい。

rm -f ./2000-05/linux.txt.bak
rm -f ./2000-05/lists.txt.bak

ディレクトリ単位でファイルのパーミッションを変更するようなとき、chmodのRオプションでは、ファイルもサブディレクトリもすべて変更してしまう。しかし、設定するパーミッションによっては、ディレクトリのパーミッションは変更したくない場合がある。このようなときにもexecオプションは便利だ。

次の例では、ファイルのパーミッションを644、ディレクトリを755にしている。

USER$ find . -type f -exec chmod 644 {} \;
USER$ find . -type d -exec chmod 755 {} \;

findは時刻をもとに検索することもできる(画面5)。

USER$ date
Wed Mar 22 15:07:46 JST 2000
USER$ ls -ltr
合計 228
-rw-r--r--   1 ken-na   staffs       2909 Mar 13 15:27 from-kinoshita.txt
-rw-r--r--   1 ken-na   staffs       1958 Mar 14 20:15 options.txt
-rw-r--r--   1 ken-na   staffs       2643 Mar 15 17:42 lists.txt
-rw-r--r--   1 ken-na   staffs       2643 Mar 15 17:42 lists.txt.bak
-rw-r--r--
1 ken-na   staffs      58572 Mar 22 15:11 genko.txt
-rw-r--r--   1 ken-na   staffs      58655 Mar 22 15:11 genko.txt.bak
USER$ find . -mtime +6
./from-kinoshita.txt
./options.txt
USER$ find . -mtime -6
.
./genko.txt
./genko.txt.swp
./genko.txt.bak
USER$ find . -mtime 6
./lists.txt
./lists.txt.bak
USER$ find . -mmin -10
.
./genko.txt
./genko.txt.bak
USER$ find . -newer options.txt
.
./genko.txt
./genko.txt.bak
./lists.txt
./lists.txt.bak

画面5 findの実行例

mtimeオプションはファイルが最後に修正された時刻で検索する。オプションのうしろの数値は日数を示している。日数の前にプラスを付けると、最後に修正された時刻がその日数よりも前のファイルが報告される。マイナスの場合は指定した日数が経っていないファイルが報告される。何もつけないとその日数分だけ経過したファイルになる。

mminオプションもmtimeと同様だが、指定する数値の意味が分単位になる点だけが違う。

newerオプションは数値でなく、ファイルを指定する。そして、指定されたファイルが最後に修正された時刻よりも、最近修正されたファイルが報告される。

mtime/mmin/newerはファイルが最後に修正された時刻をもとにしたが、同様のものとして、最後にアクセスされた時刻をもとにするatime/amin/anewer、最後に属性が変更された時刻をもとにするctime/cmin/cnewerもある。

週刊アスキー最新号

編集部のお勧め

ASCII倶楽部

ASCII.jp Focus

MITテクノロジーレビュー

  • 角川アスキー総合研究所
  • アスキーカード
ピックアップ

デジタル用語辞典

ASCII.jp RSS2.0 配信中