【问题标题】:find command search only non hidden directoriesfind 命令只搜索非隐藏目录
【发布时间】:2023-03-24 23:31:01
【问题描述】:

在以下命令中,我只想搜索非隐藏的目录,如何使用以下命令执行此操作。我想在搜索日志文件时忽略隐藏目录

      find /home/tom/project/ -name '.log.txt'


   ls /home/tom/project/
   dir1
   dir2
   .backup
   .snapshot/
   .ignore/

【问题讨论】:

  • 你的意思是没有隐藏且没有隐藏父目录的目录?

标签: linux shell unix find command


【解决方案1】:

试试

find /home/tom/project -type d -name '.*' -prune -o -name .log.txt -print

【讨论】:

  • 不适用于find . -name '.*' -prune -o -print(需要一些正则表达式...)
【解决方案2】:

这将找到所有文件,但忽略那些以点开头的文件,因此隐藏文件。

find /home/tom/project/ -type f \( -iname ".log.txt" ! -iname ".*" \)

编辑: 如果上述那些不起作用,这应该可以解决问题。它有一个更好的正则表达式。

find /home/tom/project/ \( ! -regex '.*/\..*' \) -type f -name ".log.txt"

EDIT2:

以下将排除隐藏文件夹,但将搜索具有请求模式的隐藏文件:

find /home/tom/project/ \( ! -regex '.*/\..*/..*' \) -type f -name ".log.txt"

EDIT3:

grep 解决方案 :) 如果这不起作用,我会迷路 :)

find /home/tom/project/ \( ! -regex '.*/\..*/..*' \) -exec grep -l ".log.txt" {} \;

EDIT4:

您尝试过简单的解决方案吗?

find /home/tom/project/ -type f -name ".log.txt"

find /home/tom/project/ -type f -name "*" -exec grep -l ".log.txt" {} \;

【讨论】:

  • 你能给我一个它仍然找到的文件夹的例子吗?
  • 发现:检测到文件系统循环; ./.snapshot/hourly.0' has the same device number and inode as a directory which is 2 levels higher in the filesystem hierarchy. find: Filesystem loop detected; ./.snapshot/hourly.1' 具有与文件系统层次结构中高 2 级的目录相同的设备号和 inode。
  • 还是一样。你能看到我编辑的问题吗。我实际上也在搜索.log.txt文件。对不起
  • 关于日志文件,它是以点开头的吗?或者它可以有任何名称,后跟 .log.txt 吗?
  • 我已经尝试了linuxquestions.org/questions/linux-general-1/… 上的所有示例 :) 仍然无法正常工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 2023-04-03
  • 2022-06-14
  • 2017-11-16
  • 2015-06-30
  • 1970-01-01
  • 2015-04-14
相关资源
最近更新 更多