![查找所有名为node_modules 的目录,不包含名为node_modules 的子目录](https://linux22.com/image/171970/%E6%9F%A5%E6%89%BE%E6%89%80%E6%9C%89%E5%90%8D%E4%B8%BAnode_modules%20%E7%9A%84%E7%9B%AE%E5%BD%95%EF%BC%8C%E4%B8%8D%E5%8C%85%E5%90%AB%E5%90%8D%E4%B8%BAnode_modules%20%E7%9A%84%E5%AD%90%E7%9B%AE%E5%BD%95.png)
在我的开发根目录中,我想找到所有node_modules
目录。问题是它node_modules
本身包含名为 的子目录node_modules
。如何只找到最上面的node_modules
文件夹?我试过:
find -iname "node_modules" | grep -P 'node_modules.*(?!node_modules)'
但它不会过滤子目录。
答案1
node_modules
找到目录后,您需要从搜索中“删除”目录:
find . -name 'node_modules' -prune
例子:
$ mkdir foo/{a,a/b,a/b/c,}/node_modules/{a,a/b,a/b/c,}/node_modules/ -p; cd foo
$ find . -name 'node_modules'
./a/b/c/node_modules
./a/b/c/node_modules/a/b/c/node_modules
./a/b/c/node_modules/a/b/node_modules
./a/b/c/node_modules/a/node_modules
./a/b/c/node_modules/node_modules
./a/b/node_modules
./a/b/node_modules/a/b/c/node_modules
./a/b/node_modules/a/b/node_modules
./a/b/node_modules/a/node_modules
./a/b/node_modules/node_modules
./a/node_modules
./a/node_modules/a/b/c/node_modules
./a/node_modules/a/b/node_modules
./a/node_modules/a/node_modules
./a/node_modules/node_modules
./node_modules
./node_modules/a/b/c/node_modules
./node_modules/a/b/node_modules
./node_modules/a/node_modules
./node_modules/node_modules
$ find . -name 'node_modules' -prune
./a/b/c/node_modules
./a/b/node_modules
./a/node_modules
./node_modules