find の -path と -prune

Facebooktwittergoogle_plustumblrmail
$ 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 以下全部が刈り取られる。
Facebooktwittergoogle_plustumblrmail
Yusuke Dada K.
Yusuke Dada K.
台湾の現地企業で主に組み込みソフトウエアの研究開発をしている日本人です。我人是個日本人,負責軟體的研究開發。在臺灣的科技公司工作。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です