*1  404 Blog Not Found:勝手に添削 - find(1)

find の話題が盛り上がっているようだが、「last-modified が30日以上前のファイルを特定ディレクトリに退避」なんて処理にはよく find を使う。特に spam や virus 等、一時保存してその後は破棄するようなデータには cron で仕掛けておいても便利だ。
find .spam/cur/ -daystart -mtime +30 -exec mv \{\} ~/tmp/oldspam/ \;
ファイル名検索には -name だけでなく -regex や -iregex で正規表現を指定するのも便利なことがある。また -exec に関しては、代わりに -ok を使うと exec 前に実行の確認が出来るので覚えておくと良い (RETだけだと処理がスキップされる)。

ところで find に限らず CLI のコマンドは、同じ事をやる方法が複数存在する事が多い。実際問題として「より効率的な専用手段を覚える」のと「効率は多少落ちてもより汎用的な手段を覚える」のどちらがいいかというのは、限られた時間の中で常に付きまとう問題だろう。個人的には汎用的な方法を覚えた上で専用手段に手を伸ばすのが良い道だろうと思う。とはいえファイル検索に関しては find 自体が「汎用性の高い手段」だというのも否めないので、特にシステム管理者は精通して損はない。例えばアカウント管理をする人は -uid -nouser -perm あたりの存在を覚えておくと便利な事もあるだろう。

*2  zsh の履歴機能と補完機能を有効に使おう

上記のように、往々にして find の構文は複雑になる事が多いし、また似たようなことをしばらく経ってから再度やることも多い。そうした際に非常に役に立つのは過去の履歴なのは言うまでもない。zsh の場合、横着プログラミング第3回: 履歴マニア にあるように HISTSIZE と SAVEHIST を 100000 程度残しておくのは将来の自分の手間を軽減するという意味で非常に役に立つ。また zsh の compinit を使えば find -<tab> のようにオプション名の補完リストを出すことも出来る。

*3  余談: ls -l の結果を更新時間順(の逆順)に表示

これとは直接関係ないが、タイムスタンプを元にしてファイルを見つけ出す話関連で、しばらく前にどこかの blog で見かけた ls -l を last-modified 逆順に並べる alias を紹介。
alias ll='ls -lAFtr'
これで ll と叩くと、最近編集されたファイルがリストの一番下の方に出てくる。特にこれは /var/log なんていう、ファイルが大量で、かつ最新の更新があるファイルの重要度が高い場合に重宝する。例えば普通に ls -lF /var/log/ だと
# ls -lF /var/log/ 
....
-rw-r--r--  1 root     root             0 2007-02-05 14:12 uucp.log
-rw-rw-r--  1 root     utmp        202752 2007-03-31 18:00 wtmp
-rw-rw-r--  1 root     utmp        366720 2007-03-07 20:14 wtmp.1
-rw-r--r--  1 root     root         12063 2006-07-01 06:52 wtmp.report
drwxr-xr-x  2 root     root          4096 2007-02-05 13:58 xfer/
となり、肝心の部分はスクロールで流れてしまう。だが ls -lAFtr ならば
# ls -lAFtr
....
-rw-r-----  1 root     adm        1867000 2007-04-01 00:54 messages
-rw-r--r--  1 root     root       9217099 2007-04-01 00:59 spamd.log
-rw-r--r--  1 root     root        246828 2007-04-01 01:05 sensord.rrd
-rw-r-----  1 root     adm      150206935 2007-04-01 01:08 mail.log
-rw-r-----  1 root     adm       33062997 2007-04-01 01:09 auth.log
-rw-r-----  1 root     adm       15799201 2007-04-01 01:09 syslog
-rw-r-----  1 root     adm        3486279 2007-04-01 01:09 daemon.log
きっちり最近変更があったファイルが最後の方に出てくれる。

( Permalink | Comments (0) | tags: cli  )
Comments

Please write your comment. email address won't appear. Cannot use any HTML tags in comment.
コメントをお書き下さい。メールアドレスは公開されません。 またHTMLタグは利用できません。
Name   E-mail   URL
Comment

About W.W.Walker

World Wide Walker は yoosee による blog です。PDA, Web・サーバ技術, 美味しい食べ物などの話題を取り上げています... read more

このエントリーのブックマーク

Monthly Archives

Select Month to read