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

find . -name '*.js'

当前回答

您也可以使用

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

其他回答

如果您正在寻找一个高性能的答案,那么它就是:

find . -type d -name node_modules -prune -false -o -type f

使用-false排除node_modules本身。

在node_modules中包含10000个文件的目录中,它将比非路径方法快3倍。

find . -type f -not -path '*node_modules*'

如果node_modules有更多的文件,您将获得更高的性能。

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

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

对于工作解决方案(在Ubuntu 12.04(精确穿山甲)上测试)。。。

find ! -path "dir1" -iname "*.mp3"

将在当前文件夹和子文件夹(dir1子文件夹除外)中搜索MP3文件。

Use:

find ! -path "dir1" ! -path "dir2" -iname "*.mp3"

…排除dir1和dir2

您也可以使用

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

您可以使用修剪选项来实现这一点。例如:

find ./ -path ./beta/* -prune -o -iname example.com -print

或者反向grep“grep-v”选项:

find -iname example.com | grep -v beta

您可以在Linux find命令exclude directories from search中找到详细的说明和示例。