Solaris等同于深度/修剪?


10

我正在尝试在目录中找到一些文件。默认情况下,查找command内容将搜索我指定的目录及其子目录。

我尝试使用depth/maxdepthprune,但没有任何方法可以克服这个问题。有人可以指出在Solaris中使用深度/修剪的正确方法吗?

我的代码如下所示:

find file_path -depth 1 -name '*.log'

我收到以下错误:

find: bad option 1
find: [-H | -L] path-list predicate-list

Answers:


15

您混淆了两个名称几乎相似的不相关选项:

  • -depth没有任何论点。如果存在,它将告诉find您在处理目录本身之前先处理目录的内容。
  • -maxdepth N (其中N是整数)将递归限制为N级子目录。

-maxdepth选项是在的某些版本中找到的扩展find,但在Solaris的某些版本中找不到。有一个技巧,仅使用标准选项来find处理目录而不递归:-prune在子目录上使用,但排除顶层目录。因为匹配顶级目录的唯一方法是按名称,所以将名称安排为.(永远不会是子目录的名称)。

find /directory/to/traverse/. -name . -o \
                              -type d -prune -o \
                              -name '*.log' -print

我面临着这个问题,这个解决方案很有帮助。我花了一天的时间来寻找解决方案,以使其正常工作。Grrr,Solaris。
凯文·泰耶尔

您是否使用sed删除/./找到$ {directory} / sh /时发现任何问题。-名称 。-o型d-修剪-o -print | SED的/\/\.\//\//'
伊桑帖子

@EthanPost您可以这样做,但是在没有的情况下找到实现,-mindepth并且-maxdepth消失了。如果发现有问题-maxdepth,请使用find /directory/to/traverse -mindepth 1 -maxdepth 1 -name '*.log'
Gilles'SO-别再作恶了'

@Gilles在构建可能需要在这种情况下运行的框架时,花了一个力气就打扰了您!有一天,那个市场可能是我的生粮!谢谢您的帮助。
伊桑·波斯特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.