私はGNUを使用していますfind
。
このシェルセッションで問題を軽減しました。
$ mkdir t
$ cd t
$ touch a
$ ln -s a b
$ find -type l
./b
$ find -type l -o -type f
./a
./b
$ find -type l -print
./b
$ find -type l -o -type f -print
./a
眠くなるかもしれませんが、私には理解できない2つのことがあります。
- いいえ
true OR false == true
?一致しますが、追加すると一致が停止しますが、-o -type f
何が起こっていますか?find
./b
-type l
- マニュアルページにはこれが
-print
基本式であることが示されていますが、言及されていない場合はファイルを印刷し、言及されていない場合は省略するのはなぜですか?
これは(私が実際に必要なもの)を使用するときにも発生します-printf
。他の表現も影響を受けると思います。
答え1
存在する
find -type l -o -type f -print
ジョブを指定したため、デフォルト値は適用されなくなりました。ただし、これは「および」が「または」より優先順位が高いためです-printf
。-type f
find \( -type l \) -o \( -type f -print \)
リンクとファイルを同じ方法で処理するには、テストをグループ化する必要があります。
find \( -type l -o -type f \) -print