$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'
感谢。
答案 0 :(得分:1)
-prune 始终计算值True。如果它是目录,则停止当前路径名的下降。如果指定了-depth标志,则-prune标志为 忽略。
我认为如果你玩它,你可以弄清楚它在做什么。
e.g。
find . ! -name . -prune
给出
./1.tst
./2.tst
./d
由于修剪,我们不会进入./d - “停止下降......”。剩下的内容然后被-name'* .tst'过滤为只是顶层目录中的列表文件。
HTH