有没有找出两个文件夹的重名文件的开源命令行程序?

不要求内容,只找出文件名相同就行。

比如:

a
    |-- 1.txt
    |-- 2
        |-- 1.txt

b
    |-- 1.txt
    |-- 3
        |-- 1.txt

a/1.txt 与 b/1.txt 满足条件
a/1.txt 与 b/3/1.txt 不满足条件

不知道我说清楚了没有,只找出路径结构与文件名相同的。
谢谢

补充:
感谢各位的回复,我有个困扰: 复制或移动文件(夹)时,遇到重名文件怎么办?
1,停下来询问用户,如windows的默认复制逻辑,但如果用户去干别的了,回来一看……
2,事先设置好处理方式,如fastcopy、teraCopy,但问多了令人烦躁

fastcopy 无法重命名,日志无法记录跳过的文件,移动跳过功能需要购买
teraCopy 速度不如fastcopy,但功能齐全,不过日志是SQLite3格式,不好用

我的理想是: 无事别问,默认跳过重名文件并记录下来,完成任务后询问重名文件的处理方式,可以全局处理也可以部分处理。

我找不到这样的软件,貌似只能自己写了

让 chatgpt 帮你写了个脚本,不保证没bug :wink:

import os
import sys

def cache_file_paths(directory):
    file_paths = []
    for root, dirs, files in os.walk(directory):
        for file in files:
            file_path = os.path.relpath(os.path.join(root, file), directory)
            file_paths.append(file_path)
    return file_paths

def compare_file_paths(dir1, dir2):
    file_paths1 = cache_file_paths(dir1)
    file_paths2 = cache_file_paths(dir2)

    for path1 in file_paths1:
        for path2 in file_paths2:
            if path1 == path2:
                print(path1)

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print('请提供两个文件路径作为参数')
        sys.exit(1)

    dir1 = sys.argv[1]
    dir2 = sys.argv[2]

    compare_file_paths(dir1, dir2)

在命令行中运行这个脚本,并提供两个文件路径作为参数。例如:

python script.py path1 path2

cmd 下执行命令:

forfiles /p "DIR1" /s /c "cmd /c if @isdir==FALSE if exist \"DIR2\@relpath\" echo @relpath"