
findはファイルやディレクトリを検索するコマンドです。作成したファイルがどこにあるのか分からない時に使います。
-name オプションで指定したキーワードを元に指定したディレクトリを再帰的に検索してくれます。しかしファイル名が断片的にも全く思い出せない時には探せません。けれども人間はいつ頃(数日前、数カ月前?)そのファイルを作成して、更新したのかは覚えています。-mtime を使えば任意の日数に更新されたファイルを検索してくれます。
$ find ~/ドキュメント/ -type f -name *見積書* <- -type f ファイルのみ -type d ディレクトリのみ
/home/taro/ドキュメント/A社/システム構築見積書.odt
$ find . -mtime 0 <- 今日変更
$ find . -mtime 1 <- 昨日変更
$ find . -mtime -10 <- 10日以内
$ find . -mtime +10 <- 10日より前
$ find . -mtime +10 -and -mtime -20 <- 10より前、20以内のファイル
しかしfind コマンドは、指定したディレクトリ配下を全て読み込むので
ファイルが沢山ある場合は時間がかかります。そんな時は locate コマンドが便利です。locate キーワードと入力するとファイル名のDBを検索してマッチしたファイルのリストを出力してくれます。しかしこのDBは一日一回、Ubuntu の場合デフォルトでAM 06:25 にクーロンで実行されます。ラップトップなどこの時間常に起動していないパソコン上では、updadb コマンドでこのDBを更新します。なお locate はファイルとディレクトリを区別して検索してくれないので注意が必要です。ls コマンドと組み合わせれば日付順でソートして出力出来ます。
$ locate 見積書
/home/taro/ドキュメント/A社/システム構築見積書.odt
$ sudo updatedb
$ locate .odt
$ ls -rtl `locate .odt` <- 最新のファイルが一番下に表示される。