find命令仅搜索非隐藏目录

时间:2012-03-28 05:41:34

标签: linux shell unix find command

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

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


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

2 个答案:

答案 0 :(得分:4)

尝试

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

答案 1 :(得分:1)

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

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"

OR

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