- 396 名前:login:Penguin mailto:sage [2009/09/17(木) 16:40:19 ID:y7kbSG6/]
- 現在、/ 配下に次のディレクトリがある(CentOS 5.3)。
bin boot dev etc home lib lost+found media miscmnt net opt proc root sbin selinux srv sys tmp usr var で、例えばの話なんだけど、/var以下と/etc以下のファイルで72時間以内に更新されたファイルだけを検索するために、 /var以下と/etc以下だけを検索するんじゃなくて、/varと/etcの両ディレクトリ以外を検索対象から除外した上で / を検索する、という手法をとる場合、次のようなワンライナーが考えられる(改行してるけど実際は一行)。 find / \( -path '/bin/*' -o -path '/boot/*' -o -path '/dev/*' -o -path '/home/*' -o -path '/lib/*' -o -path '/lost+found/*' -o -path '/media/*' -o -path '/misc/*' -o -path '/mnt/*' -o -path '/net/*' -o -path '/opt/*' -o -path '/proc/*' -o -path '/root/*' -o -path '/sbin/*' -o -path '/selinux/*' -o -path '/srv/*' -o -path '/sys/*' -o -path '/tmp/*' -o -path '/usr/*' \) -prune -o -type f -mtime -3 -print で、これを find / $OPT -type f -mtime -3 -print と書くために、 OPT=\( -path '/bin/*' -o -path '/boot/*' -o -path '/dev/*' -o -path '/home/*' -o -path '/lib/*' -o -path '/lost+found/*' -o -path '/media/*' -o -path '/misc/*' -o -path '/mnt/*' -o -path '/net/*' -o -path '/opt/*' -o -path '/proc/*' -o -path '/root/*' -o -path '/sbin/*' -o -path '/selinux/*' -o -path '/srv/*' -o -path '/sys/*' -o -path '/tmp/*' -o -path '/usr/*' \) -prune -o とシェル変数を定義する(改行してるけど実際は一行)。で、次を実行するとエラーとなる。 # find / $OPT -type f -mtime -3 -print find: パスは評価式の前におかなければならない Usage: find [-H] [-L] [-P] [path...] [expression] これ、エラーになる原因と対策方法分かる人いたら誰か教えて。
|

|