Bash 如何在unix中使用find命令只搜索目录中的文件而不搜索子目录中的文件

Bash 如何在unix中使用find命令只搜索目录中的文件而不搜索子目录中的文件,bash,shell,unix,sh,ksh,Bash,Shell,Unix,Sh,Ksh,我想根据模式列出所有文件或特定文件,只列出我给出的目录中的文件,而不列出其子目录或子目录中的文件。我尝试使用-maxdepth 1/-depth 1/-prune选项。当使用-maxdepth选项时,它表示“maxdepth不是有效选项”,而当使用-depth选项时,它表示“缺少连接” 比如说, #一, #二, #三, 我不能使用这些选项中的任何一个。如果我的脚本有任何问题,请纠正我/让我知道如何仅从我提供的目录而不是其子目录获取文件。除了上面的例子之外,我实际上几乎尝试了很多选择,但我仍然坚持

我想根据模式列出所有文件或特定文件,只列出我给出的目录中的文件,而不列出其子目录或子目录中的文件。我尝试使用-maxdepth 1/-depth 1/-prune选项。当使用-maxdepth选项时,它表示“maxdepth不是有效选项”,而当使用-depth选项时,它表示“缺少连接”

比如说,

#一,

#二,

#三,


我不能使用这些选项中的任何一个。如果我的脚本有任何问题,请纠正我/让我知道如何仅从我提供的目录而不是其子目录获取文件。除了上面的例子之外,我实际上几乎尝试了很多选择,但我仍然坚持这一点。提前感谢您的回复

-depth
不接受参数。看起来您试图做的只是
ls
。甚至
echo
。可以肯定的是,您确实有其他东西要放在
查找中,不是吗?1<代码>-maxdepth
在所有版本的
find
中都不可用。您使用的是哪个
find
实用程序?2.正如上面的评论所说,
-depth
不接受参数(它只打开
查找
的深度优先搜索模式)。3.更有可能:
find.\-名称'.'-prune-false-o-name'*.txt'
。现在,这与更简单的选项几乎相同:
printf“%s\n”*.txt
-maxdepth
选项不是由POSIX指定的,而是由
-prune
指定的。如果您有一个非POSIX的
find
,那么我们必须准确地知道它是哪个
find
。GNU
find
(Linux发行版中常见的一个)和OS X的
find
(继承自BSD)都支持这两个选项。不过,如果您确实有
-prune
,那么您应该能够执行
find./*-name'*.txt'-prune
。请注意
/*
参数,而不是简单的
——它为
-prune
提供了正确的范围。
find /directory/ -maxdepth 1 -type f -name '*.txt' -ls
find /directory/ -depth 1 -type f -name '*.txt' -ls
find . \( -name .dir1 -prune -o -name '*.txt' \) -print