不要求内容,只找出文件名相同就行。
比如:
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格式,不好用
我的理想是: 无事别问,默认跳过重名文件并记录下来,完成任务后询问重名文件的处理方式,可以全局处理也可以部分处理。
我找不到这样的软件,貌似只能自己写了
Landius
(Landius)
2
让 chatgpt 帮你写了个脚本,不保证没bug
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"
Kyun
(權少)
4
換種思路,把重名的提前改名。
# pre-rename.ps1
if ($args.Length -lt 2) {
Write-Host "用法:"
Write-Host "prerename.ps1 源目錄 目標目錄 後綴"
exit 1
}
$src = $args[0]
if (-not(Test-Path $src -PathType Container)) {
Write-Host "${src}非目錄"
exit 1
}
$dest = $args[1]
if (-not(Test-Path $dest -PathType Container)) {
Write-Host "${dest}非目錄"
exit 1
}
# 默認後綴
$ex = "XXX"
if ($args.Length -ge 3) {
$ex = $args[2]
}
$src_file = Get-ChildItem $src -Recurse
function Get-RelativePath($parent, $child) {
return [System.IO.Path]::GetRelativePath($parent, $child)
}
foreach ($i in $src_file) {
$rela = Get-RelativePath $src $i
if (Test-Path $i -PathType Leaf) {
$dest_file = Join-Path $dest $rela
if (Test-Path $dest_file) {
$new_name = (Get-Item $dest_file).FullName + $ex
Rename-Item $dest_file -NewName $new_name -Force
Write-Host "rename $dest_file to $new_name"
}
}
}
marxlan
(猹猹)
6
Duplicate Cleaner用来文件查重很好用,建议试一下