Bash 如何在unix中使用find命令只搜索目录中的文件而不搜索子目录中的文件
我想根据模式列出所有文件或特定文件,只列出我给出的目录中的文件,而不列出其子目录或子目录中的文件。我尝试使用-maxdepth 1/-depth 1/-prune选项。当使用-maxdepth选项时,它表示“maxdepth不是有效选项”,而当使用-depth选项时,它表示“缺少连接” 比如说, #一, #二, #三,Bash 如何在unix中使用find命令只搜索目录中的文件而不搜索子目录中的文件,bash,shell,unix,sh,ksh,Bash,Shell,Unix,Sh,Ksh,我想根据模式列出所有文件或特定文件,只列出我给出的目录中的文件,而不列出其子目录或子目录中的文件。我尝试使用-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
。GNUfind
(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