使用find搜索*.js文件时,如何排除特定目录?

find . -name '*.js'

当前回答

您也可以使用

find  -type f -not -name .directoryname -printf "%f\n"

其他回答

path-prune方法还可以处理路径中的通配符。下面是一个find语句,它将查找服务于多个git存储库的git服务器的目录,而不包括git内部目录:

find . -type d \
   -not \( -path */objects -prune \) \
   -not \( -path */branches -prune \) \
   -not \( -path */refs -prune \) \
   -not \( -path */logs -prune \) \
   -not \( -path */.git -prune \) \
   -not \( -path */info -prune \) \
   -not \( -path */hooks -prune \)  

以下命令有效:

find . -path ./.git -prune -o -print

如果查找有问题,请使用-D树选项查看表达式分析信息。

find -D tree . -path ./.git -prune -o -print

或者使用-D all,查看所有执行信息。

find -D all . -path ./.git -prune -o -print

以前的答案在Ubuntu上都不好。试试看:

find . ! -path "*/test/*" -type f -name "*.js" ! -name "*-min-*" ! -name "*console*"

我在这里找到了这个

这是我用来排除某些路径的格式:

$ find ./ -type f -name "pattern" ! -path "excluded path" ! -path "excluded path"

我使用此命令查找不在“.*”路径中的所有文件:

$ find ./ -type f -name "*" ! -path "./.*" ! -path "./*/.*"

我尝试了上面的命令,但没有一个使用“-prune”的命令适合我。最后我用下面的命令尝试了一下:

find . \( -name "*" \) -prune -a ! -name "directory"