bash - 将 `find` 的结果减少到顶级结果

标签 bash find

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

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

我正在努力寻找解决这个问题的解决方案;可以找到为我做这个,或者我需要手动计算它(也许通过字符串操作)?

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

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

最佳答案

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

总结 Paxali 的回答:

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

In english: find me all directories named ".git" and filter out any occurences in the resultlist which contain ".git/" (dot git slash).

除了我的情况外,我使用了 node_modules/ 而不是 .git/

我的工作代码:

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

关于bash - 将 `find` 的结果减少到顶级结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44745713/

相关文章:

linux - 多个音频文件的 Sox 和音高变化

java - java中找不到符号

bash - 让 bash 在启动后立即运行一个命令,然后留在这个 session 中?

linux - 为什么 bash 不调用 python 脚本?

bash - 没有匹配文件时如何跳过for循环?

c++ - 如何展平多个文件中的#include 路径

java - 在 Windows 下的 java 中,如何找到重定向的桌面文件夹?

linux - 为什么我很少而不是总是得到 "cat: write error: Broken pipe"

unix find 命令结果中的权限问题

c++ - 从另一个 vector 搜索和查找一个 vector 中的元素的有效方法?