$ tree -F . . └── testdir/ └── ryuichi/ ├── kawamura/ │ ├── subdir1/ │ │ └── pupupu │ ├── txt.aaa │ ├── txt.bbb │ └── txt.ccc ├── kawamura_yuka ├── sakamoto/ │ ├── txt.111 │ ├── txt.222 │ └── txt.333 ├── txt.AAA ├── txt.BBB └── txt.CCC $ cd testdir $ find . -print . ./ryuichi ./ryuichi/kawamura_yuka ./ryuichi/kawamura ./ryuichi/kawamura/subdir1 ./ryuichi/kawamura/subdir1/pupupu ./ryuichi/kawamura/txt.ccc ./ryuichi/kawamura/txt.bbb ./ryuichi/kawamura/txt.aaa ./ryuichi/txt.CCC ./ryuichi/txt.BBB ./ryuichi/txt.AAA ./ryuichi/sakamoto ./ryuichi/sakamoto/txt.333 ./ryuichi/sakamoto/txt.222 ./ryuichi/sakamoto/txt.111 $ find . -path './ryuichi/kawamura' -prune -o -print . ./ryuichi ./ryuichi/kawamura_yuka ./ryuichi/txt.CCC ./ryuichi/txt.BBB ./ryuichi/txt.AAA ./ryuichi/sakamoto ./ryuichi/sakamoto/txt.333 ./ryuichi/sakamoto/txt.222 ./ryuichi/sakamoto/txt.111 $ find . -path './ryuichi/kawamura*' -prune -o -print . ./ryuichi ./ryuichi/txt.CCC ./ryuichi/txt.BBB ./ryuichi/txt.AAA ./ryuichi/sakamoto ./ryuichi/sakamoto/txt.333 ./ryuichi/sakamoto/txt.222 ./ryuichi/sakamoto/txt.111 $ find . -path './ryuichi/kawamura/' -prune -o -print . ./ryuichi ./ryuichi/kawamura_yuka ./ryuichi/kawamura ./ryuichi/kawamura/subdir1 ./ryuichi/kawamura/subdir1/pupupu ./ryuichi/kawamura/txt.ccc ./ryuichi/kawamura/txt.bbb ./ryuichi/kawamura/txt.aaa ./ryuichi/txt.CCC ./ryuichi/txt.BBB ./ryuichi/txt.AAA ./ryuichi/sakamoto ./ryuichi/sakamoto/txt.333 ./ryuichi/sakamoto/txt.222 ./ryuichi/sakamoto/txt.111 $ find . -path './ryuichi/kawamura/*' -prune -o -print . ./ryuichi ./ryuichi/kawamura_yuka ./ryuichi/kawamura ./ryuichi/txt.CCC ./ryuichi/txt.BBB ./ryuichi/txt.AAA ./ryuichi/sakamoto ./ryuichi/sakamoto/txt.333 ./ryuichi/sakamoto/txt.222 ./ryuichi/sakamoto/txt.111 $ find . -path './ryuichi/kawamura/*' -prune -print ./ryuichi/kawamura/subdir1 ./ryuichi/kawamura/txt.ccc ./ryuichi/kawamura/txt.bbb ./ryuichi/kawamura/txt.aaa
find のオプションへ -path ‘dir’ -prune を付加すると、これは -path ‘dir’ に適合したものを結果から -prune (刈り取る) 意味がある。しかし -path ‘dir’ の dir の指定のしかたによって、実際に刈り取られる挙動に変化が出る。以下に例を示す。
- (1) find . -path ‘./ryuichi/kawamura’ -prune -o -print
- (2) find . -path ‘./ryuichi/kawamura/’ -prune -o -print
- (3) find . -path ‘./ryuichi/kawamura/*’ -prune -o -print
これらの違いは以下。
- (1) の場合、 kawamura 自身を含め、 kawamura 以下全部が刈り取られる。
- (2) の場合、これは -path … -prune を指定しないのと全く同じ結果になる (刈り取られない) 。
- (3) の場合、 kawamura 自身は現れるが、 kawamura 以下全部が刈り取られる。