从某个根文件夹
开始考虑以下文件夹结构/root/
/root/.git
/root/node_modules
/root/A/
/root/A/stuff1/
/root/A/stuff2/
/root/A/node_modules/
/root/B/
/root/A/stuff1/
/root/A/stuff2/
/root/B/node_modules/
...
现在我在/root
,我想在其中找到我自己的所有文件。
我有一小部分自己的文件以及node_modules
和.git
中的大量文件。
正因为如此,遍历node_modules
并将其过滤是不可接受的,因为它需要太多时间。我希望命令永远不会进入node_modules
或.git
文件夹。
答案 0 :(得分:0)
仅用于直接从搜索文件夹中排除文件:
find . -not \( -path './.git' -prune \) -not \( -path './node_modules' -prune \) -type f
如果要排除子文件夹中的某些路径,也可以使用*
通配符执行此操作。
假设您node_modules
和stuff1
以及stuff2
和dist
个文件夹中也有lib
:
find . -not \( -path './.git' -prune \) -not \( -path './node_modules' -prune \) -not \( -path './*/node_modules' -prune \) -not \( -path './*/dist' -prune \) -not \( -path './*/lib' -prune \) -type f
使用git bash 1.9.5在Windows上测试
但是,当通过-name '*.js'
之类的过滤器时,它似乎无法在Windows上正常运行。解决方法可能是不使用-name
而是使用grep
来管道。