-prune找不到OR(-o)选项工作 - Unix

时间:2013-03-10 12:08:27

标签: shell scripting aix

$pwd
/tmp
$touch 1.tst 2.tst
$mkdir inner_dir
$touch inner_dir/3.tst
$find . ! -name . -prune -name '*.tst'
1.tst
2.tst

我想限制'find'只搜索当前目录中有'tst'扩展名的文件(我知道这可以用'ls'命令完成,但是想要添加其他'find'过滤器,比如mtime以后上)。 我的问题是上面的'发现'是如何运作的? 以下为什么不工作(使用OR选项)?

find . ! -name . -prune -o -name '*.tst'

感谢。

1 个答案:

答案 0 :(得分:1)

  

-prune               始终计算值True。如果它是目录,则停止当前路径名的下降。如果指定了-depth标志,则-prune标志为               忽略。

我认为如果你玩它,你可以弄清楚它在做什么。

e.g。

find . ! -name . -prune

给出

./1.tst
./2.tst
./d

由于修剪,我们不会进入./d - “停止下降......”。剩下的内容然后被-name'* .tst'过滤为只是顶层目录中的列表文件。

HTH