查找首次出现早期切割分支的脚本

查找首次出现早期切割分支的脚本

它必须存在,我的问题是如何表达我的需求。当我搜索给定的文件名时,我希望搜索在找到第一次出现时停止搜索当前分支,但继续在其他分支中搜索。

这是一个例子。这是我的当前目录:

dir1/Makefile
dir2/
dir3/Makefile
dir3/dira/Makefile
dir4/dirb/Makefile

我想要的结果find Makefile是:

dir1/Makefile
dir3/Makefile
dir4/dirb/Makefile

我不介意使用哪种脚本语言,但我更喜欢使用脚本语言中现有的功能,而不是自己实现。

答案1

因为我真的找不到任何东西,所以我自己做了一个(用 python)

#!/usr/bin/python

import os

def findInSubdirectory(filename, path):
    for root, dirs, names in os.walk(path, topdown=True):
        if filename in names:
            print os.path.join(root, filename)
            del dirs[:]

findInSubdirectory('Makefile', os.getcwd())

答案2

您可以像这样使用 find 命令:

$ find . -type d -exec test -e {}/Makefile \; -print -prune

详细地:

$ find .                            # find starting in the current directory \
       -type d                      # only look at directories \
       -exec test -e {}/Makefile \; # test if Makefile exists in the directory \
       -print                       # print the directory name and path \
       -prune                       # stop searching once we find a Makefile

(不确定这是否真的会与注释/行继续一起运行......)

最好的一点是,由于它是找到的,所以你可以做更聪明的事情,而不仅仅是打印名字。

相关内容