Python имеет функцию, вызванную networkx.simple_cycles (), который может использоваться для этого. Но да это должно было бы считать каждый файл в системе.
>>> import networkx as nx
>>> G = nx.DiGraph()
>>> G.add_edge('A', 'B')
>>> G.add_edge('B', 'C')
>>> G.add_edge('C', 'D')
>>> G.add_edge('C', 'A')
>>> nx.simple_cycles(G)
[['A', 'B', 'C', 'A']]