找不到递归

时间:2010-10-13 15:31:15

标签: unix find shell

是否可以以某种方式使用find命令,它不会递归到子目录中?例如,

DirsRoot
  |-->SubDir1
  |    |-OtherFile1
  |-->SubDir2
  |    |-OtherFile2
  |-File1
  |-File2

find DirsRoot --donotrecuourse -type f之类的结果只会是File1, File2

4 个答案:

答案 0 :(得分:328)

根据您当前的命令结构,我认为您可以使用-maxdepth 1选项获得所需内容。如果没有,您可以尝试查看find的{​​{3}}。

相关条目(为方便起见):

-maxdepth levels
          Descend at most levels (a non-negative integer) levels of direc-
          tories below the command line arguments.   `-maxdepth  0'  means
          only  apply the tests and actions to the command line arguments.

您的选择基本上是:

find DirsRoot/* -maxdepth 0 -type f #This does not show hidden files

或者:

find DirsRoot/ -maxdepth 1 -type f #This does show hidden files

答案 1 :(得分:29)

我相信您正在寻找-maxdepth 1

答案 2 :(得分:16)

如果您寻找符合POSIX标准的解决方案:

cd DirsRoot && find . -type f -print -o -name . -o -prune

-maxdepth 不符合POSIX标准。

答案 3 :(得分:0)

是的,可以通过在 find 命令中使用 -maxdepth 选项

find /DirsRoot/* -maxdepth 1 -type f

来自手册

man find

<块引用>

-最大深度级别

在起始点以下的目录的大多数级别(非负整数)级别下降。

-maxdepth 0

表示仅将测试和操作应用于起点本身。