将“查找”的结果减少到顶级结果

时间:2017-06-25 11:05:11

标签: bash find

我有一个查找表达式查找node_modules目录。一些结果是父node_modules目录中的node_modules目录。

我只对找到最顶层node_modules目录并对其执行操作感兴趣,即添加.metadata_never_index文件,以便Spotlight(macOS)不对其进行索引

我正在努力寻找解决这个问题的解决方案;可以找到我这样做,还是我需要手动计算(可能通过字符串操作)?

作为奖励,如果可能的话,我想忽略已包含.metadata_never_index文件的所有文件夹。

编辑:某些背景;这将作为一个cron作业运行,并定期在我的node_modules目录中查找~/Sites,即多个顶级项目。

2 个答案:

答案 0 :(得分:1)

经过一番搜索后,我在SuperUser找到了解决方案。

总结Paxali的答案:

  

find /home/code -type d -name ".git" | grep -v '\.git/'

     

在英语中:找到所有名为“.git”的目录,并过滤掉结果列表中包含“.git /”(点git斜杠)的任何出现。

除了我的情况,我使用node_modules/代替.git/

我的工作代码:

find -f ~/Sites . -name node_modules | grep -v 'node_modules/' | while read fname; do
    touch $fname/.metadata_never_index
done

答案 1 :(得分:0)

使用

找到可以找到的最顶层的模块

带标志的npm命令--depth

  

npm list --depth = 0

您还可以按如下方式创建别名:

alias ng="npm list -g --depth=0 2>/dev/null"
alias nl="npm list --depth=0 2>/dev/null"