[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:54601] Re: tmpreaperの使い方
さとうふみやす @ OSSTech です。
At Thu, 28 Oct 2010 00:00:53 +0900,
KISE Hiroshi wrote:
> > findでファイル操作っていうのは、意外で想像できませんでした。
>
> findは検索だけで、あとの処理は他のコマンドにおまかせする、なんて
> こともできます。findはxargsとペアで使われることが多いので、
> 覚えておくとよいかも。
>
> $ find . -name '*.avi' | xargs file
安全のため、find には -print0 を、xargs には -0r
(--null --no-run-if-empty) オプションを利用することを推奨します。
$ find . -name '*.avi' -print0 |xargs -0r file
安全でない例1:
$ find . -name '存在しないファイル名パターン' |xargs file
Usage: file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
[-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
file -C [-m magicfiles]
file [--help]
この場合、以下なら file が引数なしで実行されない:
$ find . -name '存在しないファイル名パターン' |xargs -r file
安全でない例2:
準備と確認:
$ mkdir find-xargs-demo-2
$ cd find-xargs-demo-2
$ touch foo 'bar baz'
$ mkdir -p 'trap /etc/passwd'
$ find . -ls
5915152 4 drwxrwsr-x 3 fumiyas fumiyas 4096 10月 28 00:16 .
5915160 0 -rw-rw-r-- 1 fumiyas fumiyas 0 10月 28 00:15 ./bar\ baz
5915155 4 drwxrwsr-x 3 fumiyas fumiyas 4096 10月 28 00:16 ./trap\
5915156 4 drwxrwsr-x 3 fumiyas fumiyas 4096 10月 28 00:16 ./trap\ /etc
5915158 4 drwxrwsr-x 2 fumiyas fumiyas 4096 10月 28 00:16 ./trap\ /etc/passwd
5915159 0 -rw-rw-r-- 1 fumiyas fumiyas 0 10月 28 00:15 ./foo
これは期待通りに動かない:
$ find . -name "*" |xargs file
.: setgid directory
./bar: ERROR: cannot open `./bar' (No such file or directory)
baz: ERROR: cannot open `baz' (No such file or directory)
./trap: ERROR: cannot open `./trap' (No such file or directory)
./trap: ERROR: cannot open `./trap' (No such file or directory)
/etc: directory
./trap: ERROR: cannot open `./trap' (No such file or directory)
/etc/passwd: ASCII text
./foo: empty
これなら大丈夫:
$ find . -name "*" -print0 |xargs -0 file
.: setgid directory
./bar baz: empty
./trap : setgid directory
./trap /etc: setgid directory
./trap /etc/passwd: setgid directory
./foo: empty
--
-- Name: SATOH Fumiyasu (fumiyas @ osstech co jp)
-- Business Home: http://www.OSSTech.co.jp/
-- Personal Home: http://www.SFO.jp/blog/