我想查看文件夹中的某些文件,但不想查看任何子目录。
我不想排除某个目录,而是排除全部!
我已经尝试过这个
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 的最终隐藏文件。
对不起,我的英语不好 :(
你尝试看一下手册吗?
您正在寻找的选项是-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这抵消了不受最大参数长度限制的优点