从查找中排除所有子目录

Ray*_*azi 7 directory find

我想查看文件夹中的某些文件,但不想查看任何子目录。

我不想排除某个目录,而是排除全部

我已经尝试过这个

find "$dir" -name '*.out' -type d -prune
Run Code Online (Sandbox Code Playgroud)

但结果就是结果什么都没有。有什么帮助吗?

C. *_*sca 10

完成该任务的最简单方法(在不包括所有子目录的文件夹中查找文件)是

find $dir -maxdepth 1 -type f -name '*.out' -o '.*.out'

正如 @StevenPenny 和 @RalfFriedlal 所写, maxdepth 选项就是您正在寻找的。

来自查找手册: -max深度级别 下降到起始点以下目录的大多数级别(非负整数)级别。-maxdepth 0 表示仅将测试和操作应用于起点本身。

-type f :您正在搜索常规文件 -name '*.out' -o '.*.out' :-o 表示或,并允许您在搜索中包含扩展名为 .out 的最终隐藏文件。

对不起,我的英语不好 :(

  • “find”将找到隐藏文件,而无需您执行任何特殊操作。 (2认同)

Ral*_*edl 3

你尝试看一下手册吗?

您正在寻找的选项是-maxdepth,正如 @StevenPenny 已经写的那样。

结果一无所获的原因之一是(来自手册)

如果整个表达式不包含除 -prune 或 -print 之外的任何操作,则对整个表达式为 true 的所有文件执行 -print。

因此,正如您的选择所包括的那样-prune,没有任何隐含的-print。您的命令只会删除名为 的目录*.out

如果您确实想使用-prune,请执行以下操作:

find "$dir"/* -type d -prune -o -name '*.out' -print
Run Code Online (Sandbox Code Playgroud)

请注意,这使用"$dir"/*,因为"$dir"是一个目录并且会被修剪。find这抵消了不受最大参数长度限制的优点