我正在运行find
命令来查找某些文件,但是子目录中的一些文件具有相同的名称,我想忽略这些文件。
我对如下文件/模式感兴趣:
/dev/abc-scanner, /dev/abc-cash ....
该命令如下:
find /dev/ -name 'abc-*'
退货内容:
/dev/abc-scanner
/dev/abc-cash
...
...
...
/dev/.udev/names/abc-scanner
/dev/.udev/names/abc-cash
我想忽略后面的文件:/dev/.udev/...
6条答案
按热度按时间qnakjoqk1#
如果您只想将查找限制在第一个级别,则可以执行以下操作:
..。或者,如果您特别想要排除
.udev
目录,您可以执行以下操作:xe55xuns2#
您需要使用
find
有什么特殊原因吗?您可以只使用ls
来查找与目录中的模式匹配的文件。如果您确实需要使用
find
,则可以使用-maxdepth 1
开关仅应用于指定的目录。nxowjjhe3#
这可能会执行您想要的操作:
0tdrvxhp4#
我在这里遇到了一个更普遍的问题--我想在匹配模式的目录中查找文件,而不是在它们的子目录中。
我的解决方案(假设我们正在寻找直接位于
arch
目录中的所有cpp
文件):find . -path "*/arch/*/*" -prune -o -path "*/arch/*.cpp" -print
我不能使用最大深度,因为它首先限制了搜索,并且不知道我想要排除的子目录的名称。
lrl1mhuk5#
对我来说不管用。它不返回任何内容。如果我真的这么做了。它为我提供了我正在处理的目录下的所有文件。
用‘’不返回任何内容相反,我得到了我的目录中所有“大”文件的列表,以及我存储旧文件的rootfiles/目录。
还在继续。这很管用。
显然,
/dev
表示感兴趣的目录。但./
是必需的,而不仅仅是.
。即使在我或多或少了解了/dev
的含义之后,对/
的需求也并不明显。我不能回应评论,因为我没有‘声誉’。
dddzy1tm6#
还有一种叫做生皮(Rh)的替代品,使用起来要容易得多。不是:
您可以执行以下操作:
R与“-m1-m1”相同,后者与Find的“-minthepth 1-max thepth 1”相同,只是要短得多。
生皮(Rh)可从https://raf.org/rawhide或https://github.com/raforg/rawhide获得。它至少可以在Linux、FreeBSD、OpenBSD、NetBSD、Solaris、MacOS和Cygwin上运行。
免责声明:我是《生皮》的现任作者